Como POSTAR um novo nó?

16

Mencionei muitos links, incluindo o seguinte:

Tentei várias maneiras de POSTAR um novo nó para um site Drupal, mas falhei. Criei um exemplo de CCK para armazenar dados dos alunos com nome, idade, sexo, DOB e adicionei alguma lista.

Instalei e configurei o módulo Serviços (D7) e criei um ponto final de serviço nos serviços.
Como esperado, GET é a maneira mais fácil de obter detalhes de um nó no JSON. http://localhost/drupal/services/nodesimplesmente listou todos os nós.

Ainda não consigo descobrir como usar o método POST .

  1. Gostaria de procurar os alunos cujo nome contém john . Eu tentei localhost/drupal/services/node&node[name]=john. Eu usei o plugin POST Man para o Chrome sem sucesso. Eu também tentei algumas outras maneiras.

  2. Tentei adicionar um novo aluno ao site sem sucesso.

Alguém pode me orientar a fazer o trabalho acima bem?

ATUALIZAÇÃO:

Tentei adicionar novos nós do tipo article . Funcionou bem. mas quando estou tentando adicionar nós do tipo Departamento CCK Ele está mostrando " s: 22:" Falha na validação do CSRF "; " Aqui estão as capturas de tela

Passei pelo link https://drupal.org/node/2013781

Eu segui session = session_name = session_id, mas ainda recebo um erro.
insira a descrição da imagem aqui insira a descrição da imagem aqui insira a descrição da imagem aqui

Ramaraju.d
fonte
O que acontece quando você tenta POSTAR um nó? Você recebeu uma mensagem de erro? Se assim for, o que é?
Gaelan

Respostas:

22

Espero que isso ajude você,

Para Drupal 7

Ferramentas usadas:

  • Complemento do Firefox Poster para fazer testes e depuração. Também pode haver outro complemento. Mas, neste exemplo, estou usando o complemento do Firefox.
  • Para ajudar a editar e validar os dados JSON, você pode usar
    • Edite os dados JSON usando este link
    • Valide os dados JSON usando este link

Solicitações HTTP

  • Para fazer solicitações de HTTP, você precisa usar o complemento do Firefox POSTER .

  • Dois métodos comumente usados ​​para uma resposta de solicitação entre um cliente e um servidor são:

    • OBTER
    • POSTAR
  • Após o download do complemento. Abra o Firefox -> Ferramentas -> Pôster

    insira a descrição da imagem aqui

  • Certifique-se de ativar a autenticação da sessão . Depois dos Serviços está configurado corretamente, antes de criar o nó que você deve log-in . Uma vez logado, você pode criar os nós.

  • Para fazer login, use o método POST, com o URL como - http://XXXXXXXX.com/demo/rulebook/rulebook_endpoint/user/login

    insira a descrição da imagem aqui

  • Se for um usuário válido , ele retornará detalhes do usuário com o ID e o nome da sessão . Se não for válido, ele retornará Acesso negado

    insira a descrição da imagem aqui

  • Usando o nome e o ID da sessão no POST HEADER, podemos criar novos nós

    insira a descrição da imagem aqui

  • Agora, depois de adicionar o HEADER, você precisa fazer uma solicitação HTTP POST e garantir que o usuário tenha permissões para criar o nó.

    insira a descrição da imagem aqui

  • Se o nó for criado, você receberá a resposta com o link do nó

    insira a descrição da imagem aqui

NOTA: Se você desejar a resposta em JSON, deverá sempre acrescentar .json no final da URL. por exemplo, http://XXXXXXXX.com/test/endpoint/user.json OU http://XXXXXXXX.com/test/endpoint/node.json OU http://XXXXXXXX.com/test/endpoint/user/user_id .json OU http://XXXXXXXX.com/test/endpoint/node/node_id.json

inizio
fonte
Desculpe, desmarquei a opção codificada por URL no módulo de serviços. e aqui está a resposta 401: Não autorizada: falha na autorização do CSRF. O que pode estar causando isto? Muito obrigado
Ramaraju.d
oi @inizio, posso saber com que base você atribuiu o valor da sessão no HEADERS. Você pode deixar claro. Exemplo, o sessionId que recebi é SESS29af1facda0a866a687d5055f2fade2c, mas na sua resposta ele tem mais duração!
Ramaraju.d
O valor da sessão em HEADERS consiste em session_name e session_id. ou seja, session é a variável e seu valor consiste em session_name = session_id. session = (session_name = session_value)
inizio
Ele diz 401: Não autorizado: a validação do CSRF falhou. Eu dei o seguinte como cabeçalhos nome = valor da sessão = SESS29af1facda0a866a687d5055f2fade2c = gBVoqtkN2ZNjDyOjIfpz47oQpnmCKytcgHOCHZhKRzo
Ramaraju.d
Sim funcionou. Mas o único problema, O artigo CCK possui título, nome_do_campo, corpo, mas apenas o título está sendo salvo e o nó é criado, mas o campo corpo e nomes estão vazios. Como superar isso.
Ramaraju.d
7

Para Drupal 7 e Serviços 7.x-3.x

Etapa 1: emita uma solicitação de postagem para o user.loginrecurso com seu nome de usuário e senha.

Se o login for bem-sucedido, você receberá um objeto de resposta com 4 propriedades:

  • session_name
  • sétimo
  • símbolo
  • usuário (objeto)

Captura de tela do carteiro do google chrome Captura de tela do carteiro do google chrome

Etapa 2: emitir uma solicitação de postagem nodecom 2 cabeçalhos

  • Cookie: [session_name] = [sessid]
  • X-CSRF-Token: [token]

Captura de tela do carteiro do google chrome Captura de tela do carteiro do google chrome

Muhammad Reda
fonte
Tentei usar o usuário <endpoint> /user.login, mas não é repsonse: prntscr.com/gru4y6 - não tenho certeza do que estou fazendo de errado.
Patoshiパトシ
0

Se você fizer o POST na API REST , precisará colocar tudo nos dados do POST , não no URL . No Postman, você pode definir a solicitação para postagem, em x-www-form-urlencodedseguida digite e abaixo os valores dos dados. Não se esqueça de adicionar status, uid, idioma, tipo, título e valores extras. O URL do recurso deve ser apenas HOST/REST_API_PATH/node.

itarato
fonte
1
Um pouco confuso. Ok, você pode me dizer quais devem ser os parâmetros para criar um novo artigo.? Se você não se importa, pode postar um exemplo ou um link para que eu possa ter um conceito claro!
Ramaraju.d