Open robinandeer opened 10 years ago
Looks good, I will start with it and come back with questions if there are any.
Hur kommer din data att se ut. En comment åt gången eller alla comments som tillhör familjen?
Om man skickar en comment så kommer det att motsvara detta curl-anrop: curl -X POST -H "Content-Type: application/json" -d '{ "family": "1", user_comment":"Negative", "log_column":"IEM", "position_in_column":"conclusion", "email":"bla_bla@gmail.com"}' http://localhost:8082/families/1/comments
Helst vill jag kunna skicka en comment i taget.
Däremot behövs ingen GET route för fråga om en enskild comment.
Bra det passar mig bäst.
Om du skickar en JSON som ser ut så här så kommer det att funka bra tror jag:
{ "family": "1",
"user_comment":"Negative",
"log_column":"IEM",
"position_in_column":"conclusion",
"email":"bla_bla@gmail.com"}
Kör du med "family" eller "family_id"? För att markera en foreign key...
Spelar ingen roll för min del.
Okej, nej det är ingen stor grej. Men finns det något unikt ID per kommentar? Om det finns får du gärna skicka med det, annars är det ingen fara.
Ja, varje kommentar har en 'primary key' i databasen så det finns. Men Anna ville att varje användare bara skulle kunna ha en kommentar per log_typ och log_position så jag tror inte att vi behöver bry oss om det?
Om det redan finns en kommentar för en användare i 'IEM', 'conclusion' så skriver jag över den med den nya datan.
Alright. Nej, då går det nog bra att strunta i det :)
Nu finns det stöd för:
GET /families/:family_id/comments - list all comments POST /families/:family_id/comments - create a new comment PUT /families/:family_id/comments/:comment_id - Update a comment DELETE /families/:family_id/comments/:comment_id - Delete a comment
den JSON som förväntas vara 'body' är:
{ "family": "1",
"user_comment":"Negative",
"log_column":"IEM",
"position_in_column":"conclusion",
"email":"bla_bla@gmail.com"}
Date sätts alltid automatiskt av databasen.
PUT anropar POST metoden så dom två beter sig på precis samma sätt. Om det inte finns en kommentar för familj,log_column, position,email så kommer den att skapas. Det redan finns en post så lpmmer den att ersättas med den nya informationen.
Nu finns det även:
GET /variants/:variant_id/comments - list all comments POST /variants/:variant_id/comments - create a new comment PUT /variants/:variant_id/comments/:comment_id - Update a comment DELETE /variants/:variant_id/comments/:comment_id - Delete a comment
POST och PUT förväntar sig att det finns en body med följande JSON: { "rating":"TOP", "variant_comment":"Heja", "email":"kalle_kula@scilifelab.se"}
DELETE vill ha en JSON som ser ut: { "email":"kalle_kula@scilifelab.se"}
Men förstår jag rätt då om man skulle kunna skicka som: PUT /variants/:variant_id/comments/:email DELETE /variants/:variant_id/comments/:email
Där dynamiska delen "email" fungerar som "comment_id"
Visst skulle man kunna göra så, men känns det inte som man missbrukar PUT, POST mekanismen då? Man begränsar dessutom hur lång en kommentar kan vara.
Men det kanske är ok?
Absolut, jag menade bara isf vad jag ska skicka med URL-parametern "comment_id". För den skickar du inte med i GET, eller hur?
Alltså är "comment_id" i vårt fall i praktiken användarens email. Sedan skickar jag såklart en payload med data till POST och PUT precis som du beskrivit.
Jag antar att det som skulle vara skillnaden är DELETE. Tror inte ens att de är möjligt att skicka data till DELETE, utan där måste all information ingå i URL-en. http://stackoverflow.com/questions/15088955/how-to-pass-data-in-the-ajax-delete-request-other-than-headers
2014-01-29 Mats Dahlberg notifications@github.com
Visst skulle man kunna göra så, men känns det inte som man missbrukar PUT, POST mekanismen då? Man begränsar dessutom hur lång en kommentar kan vara.
Men det kanske är ok?
Reply to this email directly or view it on GitHubhttps://github.com/MatsDahlberg/clinicalDB/issues/1#issuecomment-33576629 .
Robin Andeer robin.andeer@gmail.com
Ahh, visst. DELETE borde funka med att anropa med: /variants/1627432/comments/kalle_kula@gmail.com
Mitt test av funktionen var:
curl -X DELETE -H "Content-Type: application/json" -d '{ "email":"kalle_kula@scilifelab.se"}' http://localhost:8082/variants/1627432/comments
Skickar du tillbaka något efter POST?
Kan vara fel i min kod, men jag tänkte bara höra.
POST /api/v1/variants/1627427/comments
Nej, jag skickar ingenting. Men om du vill kan jag skicka ngt.
Jag kan returnera GET efter att jag fått en POST, PUT eller DELETE.
Ja, du får gärna skicka tillbaka specifikt det datum (och userName?) du sätter på kommentaren, men skicka helst alla fält som i en normal GET request.
Jag lyssnar på success/fail response.
Nu har jag gjort så att POST, PUT eller DELETE anropar med en GET efter att databasen har modifierats.
CRUD for family comments
GET /families/:family_id/comments - list all comments GET /families/:family_id/comments/:comment_id - get comment by ID POST /families/:family_id/comments - create a new comment PUT /families/:family_id/comments/:comment_id - Update a comment DELETE /families/:family_id/comments/:comment_id - Delete a comment
Create fields: all as before - I send a JSON document Editable fields: user_comment, log_date, log_column, position_in_column
CRUD for variant comments
GET /variants/:variant_id/comments - list all comments GET /variants/:variant_id/comments/:comment_id - get comment by ID POST /variants/:variant_id/comments - create a new comment PUT /variants/:variant_id/comments/:comment_id - Update a comment DELETE /variants/:variant_id/comments/:comment_id - Delete a comment
Create fields: all as before - I send a JSON document Editable fields: rating, comment_date, variant_comment