비 REST HTTP 대신 REST를 사용하면 어떤 이점이 있습니까?


답변:


162

REST 무엇인지 실제로 아무도 아무도 동의하지 않기 때문에 이것에 대한 좋은 대답을 얻지 못할 것이라고 생각합니다 . 위키 피 디아 페이지는 전문 용어 무거운 및 설명에 빛입니다. 토론 페이지는 사람들이 이것에 얼마나 동의하지 않는지 살펴볼 가치가 있습니다. 그러나 내가 알 수있는 한 REST는 다음을 의미합니다.

대신 무작위로 이름 세터와 게터 URL을 갖고 사용하는 GET모든 게터과 POST세터 모두를 위해, 우리는 URL이 자원을 식별하도록 시도하고 HTTP 작업을 사용 GET, POST, PUT그리고 DELETE그들에게 물건을 할 수 있습니다. 그래서 대신

GET /get_article?id=1
POST /delete_article   id=1

당신은 할 것

GET /articles/1/
DELETE /articles/1/

그리고 그 POSTPUT대응 "을 만들"와 "갱신"작업 (하지만 아무도 어떤 방법 내내 동의하지 않음)에.

캐싱 인수는 일반적으로 캐시 되므로 일반적으로 캐시 문자열 을 사용할 필요 없기 때문에 캐싱 인수가 잘못되었다고 생각 합니다. 예를 들어 django는 이와 같은 것을 매우 쉽게 만들고 REST라고 말하지 않습니다.

GET /get_article/1/
POST /delete_article/     id=1

또는 URL에 동사를 포함 시키십시오.

GET /read/article/1/
POST /delete/article/1/
POST /update/article/1/
POST /create/article/

이 경우 GET부작용이없는 POST것을 의미하며 서버의 데이터를 변경하는 것을 의미합니다. 난 당신이 전체 피할 수 특히,이 아마 조금 명확하고 쉽게 생각 PUT일등석 POST일을. 또한 원하는 경우 동사를 더 추가 할 수 있으므로 HTTP가 제공하는 기능에 인위적으로 구속되지 않습니다. 예를 들면 다음과 같습니다.

POST /hide/article/1/
POST /show/article/1/

(또는 어쨌든 예제가 발생할 때까지 생각하기가 어렵습니다!)

결론적으로 볼 수있는 장점은 두 가지뿐입니다.

  1. 웹 API가 더 깨끗하고 이해하기 쉬울 수 있습니다.
  2. 웹 사이트와 데이터를 동기화 할 때는 말만 synchronize("/articles/1/")하거나 무엇이든 할 수 있기 때문에 REST를 사용하는 것이 더 쉽습니다 . 이것은 코드에 크게 의존합니다.

그러나 나는 꽤 큰 단점이 있다고 생각합니다.

  1. 모든 조치가 CRUD에 쉽게 맵핑되는 것은 아닙니다 (작성, 읽기 / 검색, 업데이트, 삭제). 객체 유형 리소스를 다루지 않을 수도 있습니다.
  2. 모호한 혜택을위한 추가 노력입니다.
  3. 어떤 방법으로 라운드로 혼란 PUT하고 POST있습니다. 영어로 그들은 비슷한 것을 의미합니다 ( "나는 벽에 통지를 게시 / 게시 할 것입니다.").

결론적으로 말하면 : 추가 노력을 기울이고 싶지 않거나 서비스가 CRUD 작업에 실제로 매핑되지 않으면 API의 두 번째 버전에 대해 REST를 저장하십시오.


방금 REST와 관련하여 또 다른 문제가 발생했습니다. 한 요청에서 둘 이상의 작업을 수행하거나 복합 객체의 일부를 가져 오려는 것을 지정하는 것은 쉽지 않습니다. 이는 왕복 시간이 중요하고 연결을 신뢰할 수없는 모바일에서 특히 중요합니다. 예를 들어, 페이스 북 타임 라인에 게시물을 받고 있다고 가정합니다. "순수한"REST 방식은 다음과 같습니다.

GET /timeline_posts     // Returns a list of post IDs.
GET /timeline_posts/1/  // Returns a list of message IDs in the post.
GET /timeline_posts/2/
GET /timeline_posts/3/
GET /message/10/
GET /message/11/
....

어리석은 일입니다. Facebook의 API는 매우 훌륭한 IMO이므로 그들이하는 일을 봅시다 :

기본적으로 쿼리 할 때 대부분의 개체 속성이 반환됩니다. "fields"쿼리 매개 변수를 사용하여 리턴 할 필드 (또는 연결)를 선택할 수 있습니다. 예를 들어이 URL은 Ben의 ID, 이름 및 사진 만 반환합니다. https://graph.facebook.com/bgolub?fields=id,name,picture

REST로 어떻게 그런 일을하는지 전혀 알지 못하며 여전히 REST로 계산되는지 여부를 알 수 있습니다. 나는 당신이 그렇게하지 말아야한다고 말하려고하는 누군가를 확실히 무시할 것입니다 (특히 이유가 "휴식이 아니기 때문에")!


4
POST 및 PUT은 HTTP RFC에 따라 사용됩니다. 이 경우 PUT은 특정 위치에서 무언가를 생성 / 업데이트하는 것을 의미합니다. 이는 URI에 이미 존재하는지 (그리고 그것은 dem 등원인지)에 달려 있습니다 .POST는 웹 서비스에 당신이 무엇을 넣을 것인지 결정하도록 요청합니다 그것을 보내고-그러면 URI를 반환합니다 (그래서 만 생성됩니다). 컴퓨터에서 무엇이든 가리킬 때 DELETE를 완전히 사용하지 않을 때가 아니라 영어에 대해 실제로 불평 할 수 없습니다. 그래도 편집에서 제기 된 문제와 관련하여 무엇을 해야할지 궁금합니다. : P
Nan L

7
Facebook API 예제는 나에게 REST처럼 보입니다 (실제로는 URL에서 동사를 사용하는 예제보다 훨씬 낫습니다). 쿼리 매개 변수가 RESTful 일 수없는 이유는 없습니다. 데이터를 계층 구조로 배열 할 수있는 경로를 사용하는 것이 좋습니다.
저스틴 에머리

5
쿼리 문자열은 리소스를 참조하지 않는 한 완벽하게 RESTful합니다. 나는 그것들을 종말점의 행동을 조정할 수있는 필터와 같은 것으로 생각하는 경향이 있습니다.
Sinaesthetic

3
-1, REST는 Roy Fielding이 발명했을 때 설명한 것처럼 매우 구체적입니다. 이 답변을 참조하십시오 . 특히 : "클라이언트는 초기 URI 만 알고 있으면 서버 제공 옵션 중에서 선택하여 작업을 탐색하거나 수행합니다." . 기본적으로 API의 엔드 포인트가 "사용자 ID를 제공했다면 /user/{id}다음과 같이 사용자 정보를 얻을 수 있습니다"라고 말하면 불편하지 않습니다. 고려 사항 : 브라우저가 HTML을 얻는 방법을 알고 미리 프로그래밍되어 있어야합니다. 페이지?
Claudiu

1
(계속 ...) 다른 사람들이이 용어를 잘못 사용한다고해서 그 용어가 바뀌지 않습니다. 면책 조항 : 여전히 REST가 무엇인지 배우고 있으며 최근에 클릭 한 것입니다.
Claudiu

47

간단히 말해, REST는 HTTP를 원래대로 사용하는 것을 의미합니다.

REST에 대한 Roy Fielding의 논문을 살펴보십시오 . 나는 웹 개발을하는 모든 사람이 그것을 읽어야한다고 생각합니다.

참고로 Roy Fielding은 HTTP 프로토콜의 핵심 드라이버 중 하나입니다.

advandages의 이름을 지정하려면 :

  • 단순한.
  • HTTP 캐시와 프록시 서버를 잘 활용하여 높은로드를 처리 할 수 ​​있습니다.
  • 매우 복잡한 응용 프로그램도 간단한 리소스로 구성 할 수 있습니다.
  • 새로운 클라이언트가 응용 프로그램을 위해 특별히 설계하지 않은 경우에도 응용 프로그램을 쉽게 사용할 수 있습니다 (아마도 응용 프로그램을 만들 때 주변에 없었기 때문에).

11
"단순": 왜 REST가 HTTP보다 단순합니까?
Dimitri C.

5
"구성하는 데 도움이됩니다": GET과 POST 만 사용하면이 조직이 더 어려워 집니까?
Dimitri C.

1
"새로운 클라이언트가 응용 프로그램을 쉽게 사용할 수있게 해줍니다": 이것은 REST와 일반 HTTP에 관한 것입니다.
Dimitri C.

23
REST 제약 조건을 따르는 것은 분명 간단하지 않습니다. 복잡한 비즈니스 운영을 네 가지 표준 동사로 짜는 것은 실제로 때로는 어려운 일입니다. 그러나, 잘 수행되면, 최종 결과는 이해하기 쉽지만, 거기에 도달하는 것 외에는 아무것도 없습니다.
Darrel Miller

6
@Dimitri : "간단한"그것은 작업하기위한 간단한 프레임 워크를 제공하기 때문입니다. REST HTTP입니다! SOAP보다 훨씬 간단합니다 (이름조차 간단합니다). "구성하는 데 도움이됩니다"-개념을 이해하기가 어렵지 않으며, 일단 올바르게 구현하면 상황이 매우 잘됩니다. REST는 앱을 디자인하는 방법이 아니라 구현 세부 사항 일 수 있습니다. Darrel은 구현이 쉽지 않을 수도 있지만 그 결과는 보람이 있습니다. "새로운 클라이언트가 애플리케이션을 쉽게 사용할 수있게 해줍니다"-REST HTTP입니다.
Emil Ivanov

31

간단히 말해서 : NONE .

공감할 수는 있지만, 비 REST HTTP에 비해 실질적인 이점은 없다고 생각합니다. 모든 현재 답변이 유효하지 않습니다. 현재 가장 많이 투표 된 답변의 인수 :

  • 단순한.
  • HTTP 캐시와 프록시 서버를 잘 활용하여 높은로드를 처리 할 수 ​​있습니다.
  • 매우 복잡한 응용 프로그램도 간단한 리소스로 구성 할 수 있습니다.
  • 새로운 클라이언트가 응용 프로그램을 위해 특별히 설계하지 않은 경우에도 응용 프로그램을 쉽게 사용할 수 있습니다 (아마도 응용 프로그램을 만들 때 주변에 없었기 때문에).

1. 단순

REST를 사용하면 서버 측 및 클라이언트 측 스크립트에 대한 추가 통신 계층이 필요합니다. => 실제로 비 REST HTTP를 사용하는 것보다 더 복잡합니다.

2. 캐싱

캐싱은 서버가 보낸 HTTP 헤더로 제어 할 수 있습니다. REST는 비 REST에서 누락 된 기능을 추가하지 않습니다.

3. 조직

REST는 사물 정리에 도움 이 되지 않습니다 . 그것은 강제로 사용중인 서버 측 라이브러리가 지원하는 API를 사용합니다. 비 REST 접근 방식을 사용할 때 응용 프로그램을 같은 방식으로 구성 할 수 있습니다. 예를 들어 Model-View-Controller 또는 MVC 라우팅을 참조하십시오 .

4. 사용하기 쉬운 / 구현

전혀 사실이 아닙니다. 이 모든 것은 응용 프로그램을 얼마나 잘 구성하고 문서화하는지에 달려 있습니다. REST는 마술처럼 애플리케이션을 향상시키지 않습니다.


3
일반적으로 나머지 API는 동일한 수명주기 (동시에 생성 및 업데이트 됨)를 가진 리소스로 데이터를 분리하여 캐시를 캐시하고 캐시 할 수 있도록합니다. 후 처리가 많이되거나 여러 엔티티가
모여서

2
상호 배타적이지 않은 것을 수정하십시오 (캐시 가능한 비 휴식 API를 가질 수 있음).하지만 API 디자인에 대한 휴식 접근법을 취하면 실제로 다양한 모범 사례 (발견 가능성, 일반 인터페이스, 캐시 가능성, 지능형 리소스 모델링)를 장려하므로 확실히 관련이 있습니다. )
Scott Schulthess

4
"REST는 사물을 정리하는 데 도움이되지 않습니다. 사용중인 서버 측 라이브러리에서 지원하는 API를 사용해야합니다." 나는 이것이 무엇을 의미하는지 잘 모르겠습니다. 추가 서버 측 프레임 워크를 사용하지 않고 RESTful API를 작성하는 것은 (REST가 아닌 API를 구성하는 것보다 더 이상 어렵지 않습니다) 완벽하게 가능합니다.
Michael O.

2
"REST를 사용하면 추가 통신 계층이 필요합니다."-허벅지, 기존 HTTP 라이브러리를 그대로 사용할 수 있습니다.
Søren Boisen

1
@ SørenBoisen이 답변은 약간 낡았습니다. 아마도 현재 상태를 더 많이 반영하도록 업데이트해야 할 것입니다.
Petr Peller

23

REST가 가능하게하는 가장 큰 장점은 클라이언트 / 서버 커플 링을 줄이는 것입니다. 기존 클라이언트를 중단하지 않고 시간이 지남에 따라 REST 인터페이스를 발전시키는 것이 훨씬 쉽습니다.


4
예를 들어 주시겠습니까? 감사!
Jan Żankowski

3
비 REST API가 얼마나 혼란 스러웠는지에 따라 다르지 않습니까?
johnny

@johnny 가능하지만 가능하지 않습니다. REST의 제약 조건은 구성 요소의 독립적 인 진화를 명시 적으로 가능하게하기 위해 선택되었습니다. 동일한 제약 조건을 적용하지 않고이를 더 잘 수행하는 방법을 찾았다면 많은 사람들이 그것에 대해 듣고 싶습니다.
Darrel Miller

@DarrelMiller REST가 비 REST http 접근 방식보다 클라이언트 / 서버 결합을 어떻게 더 잘 줄일 수 있습니까? Timmmmm이 자신의 답변에서 지적한 지점을 가리키고 있다고 생각합니다. 광산을 Timmmm 응답에서 최신 코멘트를 참조하십시오
emilly

@emilly REST 시스템은 응답을 처리하기 위해 대역 외 정보에 의존하지 않습니다. 특정 요청에서 돌아올 수있는 사항에 대해서는 가정 할 필요가 없습니다. 응답은 당신이 알아야 할 모든 것을 알려줍니다. 이를 통해 서버는 동작을 변경할 수 있으며 클라이언트는 이러한 변경 사항을 알 수 있습니다.
Darrel Miller

15

발견 가능성

각 리소스에는 계층 또는 링크의 다른 리소스에 대한 참조가 있으므로 쉽게 찾을 수 있습니다. 이는 사람이 클라이언트를 개발하여 문서를 지속적으로 컨설팅하지 않아도되고 제안을 제공하는 데 유리합니다. 또한 클라이언트 소프트웨어가 URL을 하드 코딩하지 않는 한 서버가 자원 이름을 일방적으로 변경할 수 있음을 의미합니다.

다른 도구와의 호환성

API의 어느 부분으로나 갈 수 있거나 웹 브라우저를 사용하여 리소스를 탐색 할 수 있습니다. 디버깅 및 테스트 통합이 훨씬 쉬워집니다.

표준화 된 동사 이름

올바른 단어를 찾지 않고도 작업을 지정할 수 있습니다. OOP의 getter 및 setter가 표준화되지 않은, 어떤 사람들이 사용 된 경우 상상 retrieve하고 define대신. 각 개별 액세스 포인트에 대해 올바른 동사를 기억해야합니다. 사용 가능한 소수의 동사가 그 문제에 불과하다는 것을 아는 것.

표준화 된 상태

GET존재하지 않는 리소스 인 경우 404RESTful API에 오류가 발생할 수 있습니다 . 그것을 REST가 아닌 API와 대조하십시오 {error: "Not found"}. 다른 쪽 개발자에게 메시지를 작성하기 위해 추가 공간이 필요한 경우 언제든지 응답 본문을 사용할 수 있습니다.

동일한 기능을 가진 두 개의 API를 상상해보십시오. 하나는 REST를 따르고 다른 하나는 그렇지 않습니다. 이제 해당 API에 대해 다음 클라이언트를 상상하십시오.

평안한:

GET /products/1052/reviews
POST /products/1052/reviews       "5 stars"
DELETE /products/1052/reviews/10
GET /products/1052/reviews/10

HTTP :

GET /reviews?product_id=1052
POST /post_review?product_id=1052                  "5 stars"
POST /remove_review?product_id=1052&review_id=10
GET /reviews?product_id=1052&review=10

이제 다음 질문들을 생각해보십시오.

  • 각 고객의 첫 번째 전화가 효과가 있었다면 나머지는 어떻게 작동 할 수 있습니까?

  • 액세스 포인트가 변경되었거나 변경되지 않은 API에 대한 주요 업데이트가있었습니다. 얼마나 많은 문서를 다시 읽어야합니까?

  • 마지막 쿼리의 반환을 예측할 수 있습니까?

  • 게시 된 검토를 삭제하기 전에 편집해야합니다. 문서를 확인하지 않고도 할 수 있습니까?


이것은 완전한 목록이 아니며 매우 실용적인 이점 만 포함합니다.
BoppreH

이것은 매우 현명한 답변입니다.
EralpB

10

Ryan Tomayko의 아내에게 REST를 설명하는 방법을 살펴 보는 것이 좋습니다.

타사 편집

waybackmaschine 링크에서 발췌 :

예는 어떻습니까. 당신은 교사이고 학생들을 관리하기를 원합니다 :

  • 그들이 어떤 수업에 있는지
  • 그들이 받고있는 성적,
  • 비상 연락처
  • 가르치는 책에 대한 정보 등

시스템이 웹 기반 인 경우 여기에 관련된 각 명사에 대한 URL이있을 수 있습니다 student, teacher, class, book, room, etc. ... 각 URL에 대해 기계가 읽을 수있는 표현이 있다면, 모든 정보가 표준 방식으로 소비 될 수 있기 때문에 새로운 도구를 시스템에 걸치는 것은 사소한 일입니다. ... 당신은 시험 점수를 수집하기 위해 각 개별 학교 시스템과 대화 할 수있는 전국 시스템을 구축 할 수 있습니다.

각 시스템은 간단한 HTTP GET을 사용하여 서로 정보를 얻습니다. 한 시스템이 다른 시스템에 무언가를 추가해야하는 경우 HTTP POST를 사용합니다. 시스템이 다른 시스템에서 무언가를 업데이트하려면 HTTP PUT을 사용합니다. 알아 내야 할 유일한 것은 데이터의 모습입니다.


6
부인 : 이것은 또 다른 로봇입니까?
Tobu

4
이것은 좋은 글이지만 GET과 POST를 사용하는 것이 왜 나쁜지에 대한 예는 제공하지 않았습니다.
Dimitri C.

9
그것이 내가 더 나은지 발견하려고 시도하는 이유 입니다 :-)
Dimitri C.

7
쓰기가 중단되었습니다.
Surfen


5

나는이 질문에 대한 답을 찾고있는 모든 사람들 이이 "슬라이드 쇼"를 진행할 것을 제안 합니다.

REST가 무엇인지, 왜 그렇게 멋진 지, 장단점, SOAP과의 차이점을 이해할 수 없었습니다. 그러나이 슬라이드 쇼는 매우 훌륭하고 이해하기 쉽기 때문에 지금보다 훨씬 더 명확합니다.


3

캐싱.

느슨한 커플 링 및 하이퍼 텍스트를 통한 진화 가능성을 중심으로하는 REST의 또 다른 깊이있는 이점이 있지만 캐싱 메커니즘이 RESTful HTTP에 관심을 가져야하는 주된 이유입니다.


3
캐시되지 않을 수있는 이유와 비 REST 솔루션으로 캐싱이 발생하지 않는 이유를 예를들 수 있습니까?
Dimitri C.

2
@Dimitri C .: wikipedia.org/article?id=19 링크 는 URL에 전달 된 매개 변수를 무시하므로 프록시에 의해 캐시되지 않습니다. 반면에 wikipedia.org/REST 링크 는 캐시 될 것입니다.
VP.

6
캐싱이 REST의 주요 이점 인 경우 지난 2 년 동안 RESTful 서비스를 구축하지 않았 음을 확신 할 수 있습니다.
Darrel Miller

Darrel, 당신은 느슨한 커플 링이 가장 중요하고 (어떤 유형의 시스템인지 알고 싶어하는) 분배 규모의 시스템을 구축하고 있지만 대부분의 사람들은 그렇지 않거나 기술을 사용하고 있습니다 (예 : 많은 노력을 기울인 브라우저와 html).
Mike

1
왜 그냥 사용하지 GET /get_article/19/POST /update_article캐싱 우려가있는 경우. 당신은 여전히 함께 모든 것을 할 수 GETPOST나는 믿는다 REST"사용 방법을 GET, POST, PUT그리고 DELETE만." "쿼리 문자열을 사용하지 마십시오." 그래서 내가 제안한 것은 아닙니다 REST. 그럼 다시, 아무도 정말 무엇에 동의 할 수 없다 REST 이다 나는 "웹 2.0"로 양동이에 넣어거야, 그래서.
Timmmm

3

Fielding 논문 에 작성되었습니다 . 그러나 많이 읽고 싶지 않다면 :

  • 확장 성 향상 (상태 비 저장, 캐시 및 계층화 된 시스템 제약으로 인해)
  • 클라이언트 및 서버 분리 (상태 비 저장 및 균일 한 인터페이스 제약으로 인해)
    • 재사용 가능한 클라이언트 (클라이언트는 일반 REST 브라우저 및 RDF 시맨틱을 사용하여 따라야 할 링크 및 결과 표시 방법을 결정할 수 있음)
    • 비 중단 클라이언트 (클라이언트는 API 별 지식 대신 ​​시맨틱을 사용하기 때문에 애플리케이션 별 시맨틱 변경에 의해서만 중단됨)

0
  • 모든“자원”에 ID를 부여하십시오
  • 서로 연결
  • 표준 방법 사용
  • 여러 표현이 포함 된 리소스
  • 무국적 통신

POST와 GET만으로 모든 것을 할 수 있습니까? 예, 가장 좋은 방법입니까? 이유없이? 표준 방법이 있기 때문입니다. 다시 생각하면 GET 만 사용하여 모든 작업을 수행 할 수 있습니다. 왜 POST를 사용해야합니까? 표준 때문에!

예를 들어, 오늘날 MVC 모델을 생각하면 POST, GET, PUT 및 DELETE와 같은 특정 종류의 동사에만 응답하도록 응용 프로그램을 제한 할 수 있습니다. 후드 아래에서 모든 것이 POST와 GET으로 에뮬레이트 되더라도 다른 동작에 대해 다른 동사를 갖는 것이 합리적이지 않습니까?


1
"GET 만 사용하여 모든 작업을 수행 할 수 있습니다": 이미 Silverlight에서 HTTP GET을 사용한 실험을 수행했습니다. 내 결론은 GET 메시지의 크기가 상당히 제한되어 있지만 POST 메시지는 더 클 수 있다는 것입니다 (Silverlight 설정에서). 따라서 모든 것에 HTTP POST를 사용하기로 결정했습니다! :-)
Dimitri C.

두 솔루션 모두 표준에 위배됩니다. POST를 통한 모든 것은 특히 쿼리에 좋지 않습니다. 지난 몇 년간 GET으로 작동했던 모든 검색 엔진은 이제 GET으로 작동합니다. 왜? "get"방법은이 기능을 스파이더 링 할 수 있기 때문에 ...
VP.

0

REST에서 발견이 훨씬 쉽습니다. 귀사의 서비스를 전세계에 알리는 데 도움이되는 WADL 문서 (전통적인 웹 서비스의 WSDL과 유사)가 있습니다. UDDI 발견도 사용할 수 있습니다. 전통적인 HTTP POST 및 GET을 사용하면 사람들이 귀하의 메시지 요청 및 응답 스키마를 모를 수도 있습니다.


1
WADL 문서를 사용하여 RESTful 웹 서비스를 설명하면 REST의 주요 장점 중 하나, 특히 하이퍼 미디어에서 얻는 모든 이점이 사라집니다.
Thomas Eizinger

@ThomasEizinger WADL은 정말 나쁜 일입니까? 현재 우리는 WADL을 제공하지 않은 다른 회사와 협력하여 요청에 포함 된 것에 따라 json 객체를 반환합니다. WADL은 생각을 명확하게하는 데 도움이 될 것이라고 생각합니다.
surfmuggle

WADL은 HTTP API를 설명하는 데 큰 도움이됩니다. 이 회사가 제공하는 서비스에 따라 WADL은 좋은 아이디어 일 수도 있고 아닐 수도 있습니다. 서비스가 하이퍼 미디어를 이용하지 않고 일부 객체를 JSON으로 직렬화하는 경우 서비스 작동 방식 및 예상 / 반품에 대한 문서 (WADL, Swagger 등)도 제공해야합니다. WADL 자체는 전혀 나쁘지 않으며 (정말로) RESTful 웹 서비스에 적합한 도구는 아닙니다.
Thomas Eizinger

0

한 가지 장점은 InputStream 객체, URL, DOM 노드와 같은 다른 소스에서 XML 문서를 비 순차적으로 처리하고 XML 데이터를 비 정렬화할 수 있다는 것입니다.


0

@Timmmm, 편집 내용 :

GET /timeline_posts     // could return the N first posts, with links to fetch the next/previous N posts

이것은 통화 수를 크게 줄입니다.

그리고 클라이언트가 원하는 필드 값을 표시하기 위해 HTTP 매개 변수를 허용하는 서버를 설계하는 것을 막을 수있는 것은 없습니다.

그러나 이것은 세부 사항입니다.

REST 아키텍처 스타일의 큰 장점을 언급하지 않았다는 사실이 훨씬 더 중요합니다. 예를 들어 REST 아키텍처 스타일을 사용하는 경우, 균일 한 인터페이스 사용으로 인해 클라이언트와 서버 간의 연결이 훨씬 낮아짐 등)

발언은

"모든 작업이 CRUD (만들기, 읽기 / 검색, 업데이트, 삭제)에 쉽게 매핑되는 것은 아닙니다."

: RDBMS는 CRUD 접근 방식 (SELECT / INSERT / DELETE / UPDATE)도 사용하며, 항상 데이터 모델을 표현하고 수행하는 방법이 있습니다.

당신의 문장에 대하여

"객체 유형 리소스를 다루지 않을 수도 있습니다"

: RESTful 디자인은 본질적으로 단순한 디자인이지만 디자인이 단순하다는 것을 의미하지는 않습니다. 차이가 보입니까? 리소스를 통해이를 표현하기 위해 응용 프로그램이 표현하고 처리 할 개념, 원하는 경우 수행해야하는 개념에 대해 많이 생각해야합니다. 그러나 그렇게하면 더 단순하고 효율적인 디자인이됩니다.


-1

검색 엔진은 쿼리 문자열을 무시할 수 있습니다.


8
쿼리 문자열을 사용하는 것은 완전히 RESTful입니다.
Emil Ivanov 2019

Dimitri, 일부 검색 엔진은 동적 링크를 무시합니다. 더 이상은 아니지만 여전히 눈살을 찌푸리고 있습니다. 작은 사이트를 운영하는 경우 경로에 물음표가 있으면 googlebot이 모든 페이지를 색인 생성하지 않을 수 있습니다.
wisty

3
... Google을 언급 할 때, 이는 명백히 거짓입니다 : googlewebmastercentral.blogspot.com/2008/09/…
Boldewyn

검색 엔진은 쿼리 문자열에 대해 -1을 무시하지 않습니다. webmasters.googleblog.com/2008/09/…
청동 남자
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.