새 노드를 어떻게 게시합니까?


16

다음을 포함하여 많은 링크를 참조했습니다.

Drupal 사이트에 새 노드를 POST하는 몇 가지 방법을 시도했지만 실패했습니다. 학생들의 이름, 나이, 성별, DOB를 저장하기위한 샘플 CCK를 만들고 일부 목록을 추가했습니다.

서비스 모듈 (D7)을 설치 및 구성하고 서비스에서 서비스 엔드 포인트를 작성했습니다.
예상대로 GET은 JSON에서 노드의 세부 정보를 얻는 가장 쉬운 방법입니다. http://localhost/drupal/services/node단순히 모든 노드를 나열했습니다.

POST 방법 을 사용하는 방법을 여전히 알 수 없습니다 .

  1. 이름이 john 인 학생을 검색하고 싶습니다 . 나는 노력했다 localhost/drupal/services/node&node[name]=john. 내가 사용 POST 남자가 성공하지 크롬에 대한 플러그인. 나는 또한 다른 방법을 시도했다.

  2. 나는 새 학생을 사이트에 성공적으로 추가하려고 시도했습니다.

아무도 위의 작업을 잘 수행하도록 안내 할 수 있습니까?

업데이트 :

article 유형의 새 노드를 추가하려고했습니다 . 잘 작동했습니다. 그러나 Department CCK 유형의 노드를 추가하려고 할 때 " s : 22 :"CSRF 유효성 검사에 실패했습니다 "; "스크린 샷이 있습니다.

나는 https://drupal.org/node/2013781 링크를 갔다.

session = session_name = session_id를 따랐지만 여전히 오류가 발생합니다.
여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오


노드를 POST하려고하면 어떻게됩니까? 오류 메시지가 나타 납니까? 그렇다면 무엇입니까?
Gaelan

답변:


22

이것이 도움이되기를 바랍니다.

드루팔 7

사용되는 도구 :

  • 테스트 및 디버깅을위한 Firefox 포스터 애드온 다른 애드온도있을 수 있습니다. 그러나이 예제에서는 Firefox 추가 기능을 사용하고 있습니다.
  • 사용할 수있는 JSON 데이터를 편집하고 확인하는 데 도움을주기 위해
    • 링크를 사용하여 JSON 데이터를 편집하십시오.
    • 링크를 사용하여 JSON 데이터의 유효성을 검사하십시오.

HTTP 요청

  • HTTP 요청을하려면 Firefox 애드온 POSTER를 사용해야합니다 .

  • 클라이언트와 서버 간의 요청-응답에 일반적으로 사용되는 두 가지 방법은 다음과 같습니다.

    • 가져 오기
    • 우편
  • 애드온이 다운로드 된 후 Firefox 열기 -> 도구-> 포스터

    여기에 이미지 설명을 입력하십시오

  • 세션 인증 을 활성화해야 합니다 . 서비스 가 올바르게 구성된 후 노드를 작성하기 전에 로그인 해야합니다 . 로그인하면 노드를 만들 수 있습니다.

  • 로그인의 경우 http://XXXXXXXX.com/demo/rulebook/rulebook_endpoint/user/login 과 같은 URL을 사용하여 POST 메소드를 사용하십시오.

    여기에 이미지 설명을 입력하십시오

  • 유효한 사용자 인 경우 세션 ID 및 이름과 함께 사용자 세부 사항 을 리턴 합니다 . 유효하지 않은 경우 액세스 거부 를 리턴합니다.

    여기에 이미지 설명을 입력하십시오

  • POST HEADER에서 세션 이름과 ID를 사용하여 새 노드를 만들 수 있습니다

    여기에 이미지 설명을 입력하십시오

  • 이제 HEADER를 추가 한 후 HTTP POST 요청을 작성하고 사용자에게 노드 작성 권한이 있는지 확인해야합니다.

    여기에 이미지 설명을 입력하십시오

  • 노드가 생성되면 노드 링크로 응답을 얻습니다.

    여기에 이미지 설명을 입력하십시오

참고 : JSON에서 응답을 원하면 항상 URL 끝에 .json을 추가해야합니다. 예 : http://XXXXXXXX.com/test/endpoint/user.json 또는 http://XXXXXXXX.com/test/endpoint/node.json 또는 http://XXXXXXXX.com/test/endpoint/user/user_id .json 또는 http://XXXXXXXX.com/test/endpoint/node/node_id.json


서비스 모듈에서 url-encoded 옵션을 선택 취소했습니다. 응답 401 : Unauthorized : CSRF 인증에 실패했습니다. 이 문제의 원인은 무엇입니까? 많은 감사
Ramaraju.d

안녕하세요 @inizio HEADERS에서 세션 값을 어떤 기준으로 할당했는지 알 수 있습니다. 당신은 그것을 명확하게 할 수 있습니까? 예를 들어, 내가 얻은 sessionId는 SESS29af1facda0a866a687d5055f2fade2c이지만 대답에 더 많은 길이가 있습니다!
Ramaraju.d

HEADERS의 세션 값은 session_name 및 session_id로 구성됩니다. 즉, session은 변수이며 값은 session_name = session_id로 구성됩니다. 세션 = (session_name = session_value)
inizio

401 : Unauthorized : CSRF 유효성 검사에 실패했습니다. 헤더 이름 = 세션 값 = SESS29af1facda0a866a687d5055f2fade2c = gBVoqtkN2ZNjDyOjIfpz47oQpnmCKytcgHOCHZhKRzo
Ramaraju.d

그렇습니다. 그러나 유일한 문제는 Article CCK에 title, field_names, body가 있지만 title 만 저장되고 node가 만들어 지지만 body와 names 필드는 비어있는 것입니다. 이것을 극복하는 방법.
Ramaraju.d

7

Drupal 7 및 서비스 7.x-3.x

1 단계 :user.login 사용자 이름과 비밀번호를 사용하여 리소스에 게시 요청을 보냅니다.

로그인에 성공하면 4 가지 속성을 가진 응답 객체를 얻게됩니다 :

  • session_name
  • 세 시드
  • 토큰
  • 사용자 (개체)

Google 크롬 우편 배달부 스크린 샷 Google 크롬 우편 배달부 스크린 샷

2 단계 :node 헤더 2 개로 게시 요청 발행

  • 쿠키 : [session_name] = [sessid]
  • X-CSRF- 토큰 : [토큰]

Google 크롬 우편 배달부 스크린 샷 Google 크롬 우편 배달부 스크린 샷


<endpoint> /user.login 사용자에게 시도했지만 응답하지 않았습니다 : prntscr.com/gru4y6- 무슨 일이 잘못되었는지 확실하지 않습니다.
Patoshi パ ト シ

0

REST API에 POST 를 수행하는 경우 URL이 아닌 POST 데이터 에 모든 것을 넣어야 합니다. 에서 우체부 당신은 형보다, 게시물에 대한 요청을 설정할 수 있습니다 아래 당신이 당신의 데이터 값을 추가 할 수 있습니다. 상태, UID, 언어, 유형, 제목 및 추가 값 을 추가하는 것을 잊지 마십시오 . 리소스 URL은이어야합니다 .x-www-form-urlencodedHOST/REST_API_PATH/node


1
약간 혼란 스럽습니다. 새 기사를 만들기위한 매개 변수가 무엇인지 말해 줄 수 있습니까? 마음에 들지 않으면 예제 나 링크를 게시하여 명확한 개념을 가질 수 있습니다!
Ramaraju.d 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.