CakeStation, egy népszerű cukrászda, amely különféle tortákat süt, felkért, hogy hozz létre számukra egy online rendeléskezelő rendszert.
A menü elemeinek részletei a következők.
| Tétel | Ár |
|---|---|
| Butter Cake | 15 |
| Chocolate Cake | 20 |
| Tres Leches | 25 |
A következőkre kell lehetőséget biztosítani.
pending, in progress vagy completed egyike).pending.pending.A menü lekérése
GET
/menu
application/json
{
"Butter Cake": 15,
"Chocolate Cake": 20,
"Tres Leches": 25
}
Rendelés leadása
Módszer - POST
Útvonal - /order
Kérés
username - a felhasználó felhasználóneve (string)order_items - JSON objektumok tömbje, amelyek a rendelési tételeket képviselik. Minden JSON objektum pontosan két mezőt tartalmaz: egy item sztring mezőt, amely a tétel nevét jelzi, és egy quantity egész szám mezőt, amely az adott tétel rendelési mennyiségét jelzi.{
"type": "object",
"properties": {
"username": {
"type": "string"
},
"order_items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"item": {
"type": "string"
},
"quantity": {
"type": "integer"
}
},
"required": [
"item",
"quantity"
]
}
}
},
"required": [
"username",
"order_items"
]
}
Válasz
username üres, vagyorder_items tömb üres, vagyorder_items tömb egy adott típusú tortához több mint egy JSON objektumot tartalmaz, vagyorder_items tömb egyik elemének item mezője olyan típusú tortát jelöl, amely nincs a menün, vagyorder_items tömb egyik elemének quantity mezője 1-nél kisebb értéket tartalmazapplication/json
order_id, amely a véletlenszerűen generált rendelésazonosító sztringet tartalmazza. Ennek egy érvényes numerikus érték sztring reprezentációjának kell lennie.total mező, amely a rendelés teljes értékét (egész szám) tartalmazza (azaz az egyes tortafajták ár x mennyiség összege){
"type": "object",
"properties": {
"order_id": {
"type": "string"
},
"total": {
"type": "integer"
}
},
"required": [
"order_id",
"total"
]
}
A rendelés állapotának lekérése
GET
/order/{orderId}
orderId-valcontent-type - application/json
egy JSON objektum két sztring mezővel: order_id és status, amelyek a rendelés azonosítóját és állapotát képviselik (a pending, in progress vagy completed egyike)
{
"type": "object",
"properties": {
"order_id": {
"type": "string"
},
"status": {
"type": "string"
}
},
"required": [
"order_id",
"status"
]
}
Rendelés frissítése. Csak akkor engedélyezett, ha az állapot még pending.
Módszer - PUT
Útvonal - /order/{orderId}
Kérés
a kérés tartalma egy JSON objektum egyetlen order_items mezővel.
order_items - JSON objektumok tömbje, amelyek a rendelési tételeket képviselik. Minden JSON objektum pontosan két mezőt tartalmaz: egy item sztring mezőt, amely a tétel nevét jelzi, és egy quantity egész szám mezőt, amely az adott tétel rendelési mennyiségét jelzi.{
"type": "object",
"properties": {
"order_items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"item": {
"type": "string"
},
"quantity": {
"type": "integer"
}
},
"required": [
"item",
"quantity"
]
}
}
},
"required": [
"order_items"
]
}
Válasz
orderId-valpending (azaz in progress vagy completed)order_items tömb nem felel meg ugyanazoknak a követelményeknek, mint a rendelés leadásánál (2)content-type - application/json
egy JSON objektum két mezővel
order_id, amely ugyanazt a rendelésazonosító sztringet tartalmazza, mint az eredeti rendeléstotal mező, amely a rendelés teljes értékét tartalmazza (azaz az egyes tortafajták ár x mennyiség összege){
"type": "object",
"properties": {
"order_id": {
"type": "string"
},
"total": {
"type": "integer"
}
},
"required": [
"order_id",
"total"
]
}
Megjegyzés: ha egy frissítési kísérlet meghiúsul, a meglévő rendelést nem szabad módosítani.
Rendelés törlése. Csak akkor engedélyezett, ha az állapot még pending.
DELETE
/order/{orderId}
orderId-valpending (azaz in progress vagy completed)A generált rendelésazonosítónak egyedinek kell lennie, sztringnek kell lennie, és egy érvényes szám sztring reprezentációjának kell lennie (pl. "1", "1234").
configurable változót port néven, 8080 alapértelmezett értékkel, hogy megadd a szolgáltatás által figyelt portot.orderStatus térképet a rendelések állapotának nyilvántartására, amelyben az érték vagy "pending", "in progress" vagy "completed" a véletlenszerűen generált rendelésazonosító sztringgel szemben.
"pending", "in progress" vagy "completed")orderStatus térképet a "pending" értékkel.A menü lekérése.
$ curl -v http://localhost:8080/menu
< HTTP/1.1 200 OK
< content-type: application/json
{"Butter Cake":15, "Chocolate Cake":20, "Tres Leches":25}
Kísérlet rendelés leadására érvényes tartalommal.
$ curl -v http://localhost:8080/order -d '{"username": "mary", "order_items": [{"item": "Tres Leches", "quantity": 1}, {"item": "Chocolate Cake", "quantity": 2}]}' -H 'Content-Type: application/json'
< HTTP/1.1 201 Created
< content-type: application/json
{"order_id":"7", "total":65}
Megjegyzés: az „order_id” egy véletlenszerűen generált egyedi sztring kell legyen.
Kísérlet rendelés leadására olyan tartalommal, amely nem felel meg a várt formátumnak.
$ curl -v http://localhost:8080/order -d '{"username": "mary", "order_items": [{"Tres Leches": 1}, {"Chocolate Cake": 2}]}' -H 'Content-Type: application/json'
< HTTP/1.1 400 Bad Request
'order) használható arra, hogy az order (amely egy kulcsszó) útvonalként legyen használva.Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Ballerina nyelvet 60 feladat segítségével, valódi emberi mentorálással, mindez ingyen.