ServiceStack 프로젝트 실례 002 REST 서비스 와 클 라 이언 트 모드

ServiceStack 프레임 워 크 는 세 가지 모델 의 서비스 인터페이스 실현, REST 를 제공 합 니 다. 、Client 와 WCF 가 호 환 되 는 SOAP WebService 는 이 세 가지 모델 을 통칭 하여 WebService 라 고 하 는데 현재 모 바 일 플랫폼 과 클 라 우 드 서비스 가 뜨 거 운 상황 에서 가장 보급 되 는 것 은 REST 모델 이다.
WebService 상용 연결 모드:
REST
Client
SOAP WebService
       서로 다른 모드 에서 서로 다른 데이터 (흐름) 형식 을 사용 할 수 있 습 니 다. 가장 많이 사용 되 는 것 은 XML, JSON 입 니 다. 주로 REST 모드 에서 사용 되 고 JSV, CSV, SOAP 형식의 데이터 도 지원 합 니 다.
XML
JSON
JSV
CSV
SOAP
      
       앞에서 언급 한 시작 서비스 (SS 프로젝트) 는 이러한 서 비 스 는 인터페이스 가 없 는 것 으로 대외 적 으로 데이터 서비스 만 제공 하고 사용자 정의 API 방문 을 통 해 대형 사이트 에서 널리 사용 된다. 예 를 들 어 위 챗, 웨 이 보, 타 오 바 오 와 인 망, 각종 인터넷 판 개발 API 등 이다.
       SS 에서 클 라 이언 트 가 서버 에 연결 하 는 방식 은 주로 두 가지 가 있 습 니 다. REST 방식 이나 Client 방식 을 통 해 클 라 이언 트 를 초기 화 하 는 것 은 똑 같 습 니 다.
       
var service = new JsvServiceClient("http://localhost:2790/");

REST 방식 으로 서비스 에 접근:
       
var storyResponses = service.Post<List<NewsResponse>>("newslist",
                new NewsAll() { cid=0 });

        그 중에서 service 뒤의 Post 는 HTTP 명령 입 니 다. 다음은 뉴스 All () 은 입구 류 이 고 뉴스 Response 는 수출 류 이 며 사용 시 구 조 는 다음 과 같 습 니 다.
HTTP 명령 어
수출 류
("경로"
입구 클래스 {입력 매개 변수}

클 라 이언 트 방식 으로 서비스 에 접근:
         
service.Send<SubmissionResponse>(new Submission()
                {
                    Body = news.Text,
                    Headline = news.Headline,
                    SubmissionTime = news.Date
                });

        Client 모드 의 표 지 는 Send 함 수 를 사용 하고 구 조 는 다음 과 같 습 니 다. 
Send
수출 류

입구 클래스 {입력 매개 변수}

       클 라 이언 트 모드 는 루트 를 사용 하지 않 습 니 다. 그 실행 방식 은 소프트웨어 에서 Socket 연결 모드 를 사용 하 는 것 과 유사 합 니 다. HTTP 프로 토 콜 보다 더 밑바닥 에 있 는 고속 데이터 채널 을 사용 하여 데 이 터 를 전송 합 니 다.
    일반적으로 클 라 이언 트 모드 는 REST 모드 보다 효율 적 이지 만 서버 와 클 라 이언 트 가 동시에 SS 를 사용 한 상황 에서 프레임 워 크 는 내부 에서 자동 으로 클 라 이언 트 모드 (바 이 너 리 전송, 파일 업로드 다운로드 등 을 지원 할 수 있 음) 로 전환 되 기 때문에 REST 모드 를 사용 하 는 것 과 클 라 이언 트 모드 를 사용 하 는 것 의 차이 가 크 지 않다.구체 적 으로 어떤 방식 을 사용 하면 자신의 습관 과 취향 에 따라 사용 할 수 있 습 니까?
    다음은 HTTP 명령 을 말 합 니 다. HTTP verb (HTTP 동사) 라 고도 합 니 다. 저 희 는 보통 사이트 데 이 터 를 방문 하 는 방식 으로 GET 와 POST 가 있 습 니 다. 데 이 터 를 가 져 오고 교류 하 는 방식 을 지정 합 니 다. 이것 은 HTTP 의 request 요청 에 추 가 된 것 입 니 다. HTTP 헤더 에 포함 되 어 있 습 니 다. (HTTP 전송 도 구 를 사용 하여 볼 수 있 습 니 다) REST 모드 를 사용 한 후에 전체 HTTP 명령 을 사용 할 수 있 습 니 다.자주 사용 하 는 것 은 GET 와 POST 를 제외 하고 PUT, DELETE 와 PATCH, TRACE 도 있다.
     HTTP 명령 은 보통 모든 알파벳 을 대문자 로 쓴다.
     GET 는 데 이 터 를 가 져 오 는 데 사 용 됩 니 다. 전달 하 는 매개 변 수 는 보통 URL 에 추 가 됩 니 다. 데이터 크기 제한 은 보통 1 - 16k 이 고 단일 항목 이나 목록 데 이 터 를 되 돌려 줄 수 있 습 니 다.
     POST 는 가 져 오기, 제출, 파일 업로드 등 작업 에 사 용 됩 니 다. 전달 하 는 매개 변수 나 데 이 터 는 보통 폼 으로 제출 합 니 다. 텍스트 로 도 바 이 너 리 데이터 가 될 수 있 습 니 다. 바 이 너 리 방식 은 파일, 이미지 업로드 에 사 용 될 수 있 고 파일 형식 을 사용자 정의 할 수 있 습 니 다. POST 가 제출 한 반환 수 는 보통 상태 정보 입 니 다. 예 를 들 어 작업 이 성 공 했 는 지, 작 동 한 ID, 기록 항목 수 등 입 니 다.또한 되 돌아 오 는 상태 정보 에 따라 점프 나 이상 처리 등 을 한다.POST 의 REST 모드 를 사용 하 는 서비스 에 서 는 그 데 이 터 를 Insert 문 구 를 사용 하여 데이터베이스 에 저장 하 는 데 자주 사용 된다.
    PUT 는 데이터 작업 을 업데이트 하 는 데 사 용 됩 니 다. 보통 REST 모드 에서 데 이 터 를 Update 문 구 를 사용 하여 데이터베이스 에 업데이트 합 니 다.
    DELETE 는 삭제 작업 에 사 용 됩 니 다. REST 모드 에서 두 가지 방식 으로 삭 제 를 수행 할 수 있 습 니 다. 하 나 는 하나의 대상 을 서비스 에 전달 하 는 방식 입 니 다. 예 를 들 어 하나의 order 주문 대상 (안에 실제 적 으로 효과 적 인 것 은 id 필드 일 뿐), 다른 하 나 는 하나의 id 또는 한 그룹의 id 를 전달 하고 데이터 베 이 스 를 삭제 하 는 작업 을 수행 합 니 다.
    
    PATCH 는 추가 모드 로 데 이 터 를 업데이트 하 는 데 사 용 됩 니 다.
    TRACE 에서 제출 한 데 이 터 를 디 버 깅 하고 서버 데이터 의 변경 사항 을 볼 수 있 습 니 다.
    첨부: ServiceStack 에 내 장 된 클 라 이언 트 의 실현 은 REST 든 클 라 이언 트 든 똑 같은 라 이브 러 리 를 사용 하 는 것 을 알 수 있 습 니 다. 번역 되 지 않 음
    
  • implements both  IRestClient  and  IServiceClient :
  • JsonServiceClient (uses default endpoint with JSON) - recommended
  • JsvServiceClient (uses default endpoint with JSV)
  • XmlServiceClient (uses default endpoint with XML)
  • MsgPackServiceClient (uses default endpoint with Message-Pack)
  • ProtoBufServiceClient (uses default endpoint with Protocol Buffers)

  • implements  IServiceClient  only:
  • Soap11ServiceClient (uses SOAP 11 endpoint)
  • Soap12ServiceClient (uses SOAP 12 endpoint)

  • 좋은 웹페이지 즐겨찾기