带有uri / list内容类型的Angular 2 PUT内容(多个元素)

时间:2018-03-31 10:31:42

标签: angular spring-data-rest

如何在Angular 2打字稿中发送以下内容?

要发送多个URI,我们必须通过换行符分隔它们:

curl -i -X PUT -H" Content-Type:text / uri-list"   --data-binary @ uris.txt http://localhost:8080/authors/1/books

uris.txt文件包含书籍的URI,每个书都在一个单独的行上:

http://localhost:8080/books/1 http://localhost:8080/books/2

我知道如何发送PUT htt请求,但是没有找到在PUT请求中发送多个元素的解决方案!

我无法制作如下内容: http://localhost:8080/books/1 http://localhost:8080/books/2

打字稿总是""在字符串中,我在服务器端收到错误。

我可以发送一个这样的:

 return this.http
    .put(`${this.apiUrl + this.quizesUrl}/${quiz.id}${this.questionsUrl}`
        , `${this.apiUrl + this.questionsUrl}/4`, QuizesService.OPTIONS_URI_LIST) // ...using put request
    .map(this.handleSingleResponse) // ...and calling .json() on the response to return data
    .catch(this.handleError) // ...errors if any
    .finally(() => {
      console.log('After updateQuestion request...');
    })

如何从集合中发送多个?

1 个答案:

答案 0 :(得分:0)

saveQuizQuestionAssignment(quiz: Quiz) {
  console.log(`${this.apiUrl + this.quizesUrl}/${quiz.id}${this.questionsUrl}`);
  console.log(this.createQuizQuestionRequest(quiz));
  return this.http
        .put(`${this.apiUrl + this.quizesUrl}/${quiz.id}${this.questionsUrl}`
            , this.createQuizQuestionRequest(quiz), QuizesService.OPTIONS_URI_LIST) 
        .map(this.handleSingleResponse) 
        .catch(this.handleError) 
        .finally(() => {
          console.log('After updateQuestion request...');
        }); 
}

createQuizQuestionRequest(quiz: Quiz) {
  var putRequestLine = '';
  quiz.questions.forEach(question => {    
    putRequestLine += `${this.apiUrl + this.questionsUrl + '/' + question.id}`+'\n';       
  });
  return putRequestLine;
}

我找到了非常简单的解决方案。 /当你累了很难找到最容易的事情/

" createQuizQuestionRequest'函数附加uri-list内容,后端接受它。然后请求将更新关系表中的测验问题分配(quiz_question)。

因此代码相当于邮递员发送的以下请求:

enter image description here