想象一下,我有一個學校的API。其中一個資源是Department
,其上有各種資源,例如Professors
的集合和「首席教授」。REST API - 單個url的非靜態(更改)資源 - 如何設計?
部看起來是這樣的:
{
"_links": {
"self": "http://myapi.com/department/math"
}
"name": "Math Department",
"headProfessor": {
"_links": {
"self": "http://myapi.com/professor/id/2",
"headProfessor": "http://myapi.com/headprofessor/department/math"
},
"name": "George Patton",
"id": "2"
}
"professors": {
"_links": {
"self": "http://myapi.com/professors/department/math"
},
"_collectionData": [
{
"_links": {
"self": "http://myapi.com/professor/id/1"
},
"name": "John Doe",
"id": "1"
},
{
"_links": {
"self": "http://myapi.com/professor/id/2"
},
"name": "George Patton",
"id": "2"
},
{
"_links": {
"self": "http://myapi.com/professor/id/3"
},
"name": "Paul Simon",
"id": "3"
}
]
}
}
我的問題是關於 「headProfessor」 和鏈接。 「總教授」的規範鏈接是什麼?是http://myapi.com/professor/id/1
還是http://myapi.com/headprofessor/department/math
?我應該在那裏嗎?或者只有一個必要的?有沒有更好的方式來表示某個東西的「頭部」或「頂部」,基本上是一個URL,其資源可能因爲代表關係而不是靜態資源而發生變化?
注意
是的,我第一喜歡的資源標誌符的URL,因爲它給人的資源標誌符在每個URL相同的位置。但我的問題不在於此。這只是品味和風格的問題。
GET /教授不能是相同的GET教授/ {professorId} /部門REST並沒有詳細說明它的名稱,因爲第一種方法給我所有的教授從身份證部門離開,第二種方法給我所有profId教授教授的部門。這可能是你的風格,但絕對不是RESTful URI。 –