source

HATEOAS 링크 및 참조는 JSON에서 어떻게 처리해야 합니까?

itover 2023. 3. 18. 08:33
반응형

HATEOAS 링크 및 참조는 JSON에서 어떻게 처리해야 합니까?

저는 REST API를 디자인하고 최대한 RESTful이 되기 위해 노력하고 있습니다.는 HATEOAS를 json 응답에 포함시키고 싶습니다.

관련 리소스에 URL을 추가하는 것은 매우 간단하지만 링크에 사용할 구조에 대한 논의가 있었습니다.

내가 찾은 많은 기사는 ATOM 피드로부터 빌린 구조를 사용하고 있다.

"links": [ 
    {"rel": "self", "href":"http://example.org/entity/1"},
    {"rel": "friends", "href":"http://example.org/entity/1/friends"}, ... 
]

이로 인해 다음과 같은 의문이 제기되었습니다.

  • 어레이를 컨테이너로 사용하는 이유제가 아는 Javascript 개발자의 말에 따르면, 오브젝트의 속성으로서 링크가 있으면 링크에 접속하기 쉬워진다고 합니다.예를 들어 다음과 같습니다.

    "self":    { "href":"http://example.org/entity/1" }, /* (facebook uses this) */  
    "friends": { "href":"http://example.org/entity/1/friends", "type": "..."}
    
  • 자원 속성의 참조를 기술하기 위한 공통 json 구조가 있습니까?(메시지 발신인 등).

    참조는 다시 url로 해결되어야 할 것 같습니다만, 심플한 ID도 포함하면 안 될까요?뭐랄까...

    "sender": { 
        "id": 12345,
        "href": "resource-uri"
    }
    

HATEOAS는 클라이언트가 API를 사용하기 위해 많은 지식을 필요로 하지 않도록 만들지만, 그 지식을 사용할 수 있는 가능성을 배제하는 것은 좀 꺼리는 것 같습니다(예를 들어 사용자를 먼저 찾지 않고 클라이언트 측에 링크하는 것).

API-Craft 구글 그룹에서 이 주제를 다시 시작했는데 좋은 반응을 얻었어요.

어레이 설계의 주요 장점은 다음과 같습니다.

  • 같은 관계에 대한 여러 링크
  • 링크 애그리게이트를 작성하지 않고 같은 링크에 대해 여러 관계
  • 링크를 정렬하는 능력

원인 지도는 접근성이 더 좋다.

구조에 관한 한 많은 가능성이 있습니다.

  • JSON-HAL: http://blog.stateless.co/post/13296666138/json-linking-with-hal 또는 http://stateless.co/hal_specification.html
  • JSON-LD: http://json-ld.org/ (옵션으로 Hydra 어휘 사용)
  • JSON-Schema : http://json-schema.org/ (페이지 하단의 하이퍼 메타 스키마)
  • 컬렉션 + J손: http://amundsen.com/media-types/collection/

HAL이 가장 깨끗한 솔루션이기 때문에 저는 HAL로 하겠습니다.나머지 모든 것이 약간...json치고는 이상해.

구조에 대해서는 HAL(http://stateless.co/hal_specification.html) 또는 JSON-LD: (http://json-ld.org/))을 참조해 주십시오.

http 방식으로 여러 링크를 제공할 수 있도록 해야 한다고 생각합니다.

예.

"links": [ 
    {"rel": "sender", "method":"post", "href":"http://example.org/entity/1"},
    {"rel": "sender", "method":"put", "href":"http://example.org/entity/1"}, ... 
]

아마도 당신은 당신의 생각에 맞게 그것을 조정할 수 있을 것이다.

"sender": { 
     "href":"http://example.org/entity/1",
     "methods": ["put","post"]
}

언급URL : https://stackoverflow.com/questions/13018366/how-should-i-handle-hateoas-links-and-references-in-json

반응형