HATEOAS를 구현하는 여러 RESTful API와 직접 대화하는 단일 페이지 응용 프로그램에서 권한을 처리하는 올바른 방법을 알아 내려고하고 있습니다. 예를 들어HATEOAS를 구현하는 나머지 API에 대한 사용 권한
: ". 내가 시작하고 작업을 일시 중지하지만 그들을 막을 수 없습니다 볼 수 있습니다 내 응용 프로그램의 사용자로서"
/작업/{ID} GET과 PUT 허용합니다
기본이되는 나머지 API는 다음과 같은 자원이 있습니다. 가져 오기는 작업 모델을 반환하고 PUT는 형태로 요청 본문 등의 작업 모델을 허용합니다
{
"_links" : {
"self" : "/jobs/12345678"
}
"id" : 12345678,
"description" : "foo job",
"state" : "STOPPED"
}
허용 작업 상태가 될 수 있습니다 : 휴면 | 달리기 | 일시 중지됨 | 멈췄다. ,
시작, 일시 정지를
정지 ... 만 사용자의 권한에 로그인을 기반으로 디스플레이 :
요구 사항은 UI에 나는 버튼이 있어야했다.
API 관점에서 볼 때 서버의 기본 로직으로 모든 것이 작동하므로 요청이있을 때 사용자가 상태를 STOPPED 상태로 업데이트 할 수 없습니다 (401이 반환 될 수 있음).
사용자의 권한을 앱/UI에 알리는 가장 좋은 방법은 무엇입니까? 그러면 사용자가 조치 권한이없는 버튼을 숨길 수 있습니까?
{
"_links" : {
"self" : "/permissions",
"jobs" : "/jobs"
}
"permissions" : {
"job" : ["UPDATE", "DELETE"],
"job-updates" : ["START", "PAUSE"]
}
}
또는 권한이 어쩌면 뭔가처럼 HATEOS 링크에서 API 변화를 반영해야 있도록 :
{
"_links" : {
"self" : "/jobs/12345678",
"start" : "/jobs/12345678/state?to=RUNNING",
"pause" : "/jobs/12345678/state?to=PAUSED",
}
"id" : 12345678,
"description" : "foo job",
"state" : "DORMANT"
}
이 API는 사용 권한 목록 같은 어쩌면 무언가를 제공해야 아니면 완전히 다른 방식으로해야합니까?
내가 대답을 제시의 다음 문서를 발견했습니다
국기의 팬이 아니지만 def는 대답에 동의합니다. 이용 가능한 행동을 나타내는 링크를 제공하는 것이 HATEOAS의 주요 이점 중 하나입니다. 웹 페이지와 마찬가지로 항목을 삭제할 수없는 경우 삭제 버튼이 없습니다. –
나는 깃발 팬이 아닙니다. 나는 대부분의 경우 깃발이 적절하지 않다고 생각하지만 어떤 경우에는 왜 가능할 수 있는지를 알 수 있습니다. 때로는 처리 상태로 인해 작업을 수행 할 수없는 경우가 있습니다. 그러나 링크 (본문의 특성과 같은)를 포함하고 링크가 실제로 사용되는 경우 모든 요청에 적절한 상태 코드를 반환하는 동안 이러한 종류의 것을 나타낼 수있는 다른 방법이 있습니다. – basicallydan