2016-12-02 6 views
1

Я пытаюсь отправить запрос POST на веб-сайт Drupal (создать новый узел испытания типа контента), но я получаю сообщение об ошибке 422 (Unprocessable Entity)Ошибка 422 по запросу POST Угловое 2 Drupal 8

Этот моя служба в угловому:

createBlog(blog: Blog): Observable<any>{ 
    let url = this.API_URL + "entity/node"; 
    blog._links = {type : { href: 'http://example.co.uk/rest/type/node/test' } }; 
    return this.http.post(url, blog, {headers:this.headers}).map(res => res.json()).catch(err => { 
console.log(blog) 
    return Observable.throw(err.json); 
    }); 
} 

И это то, что я получаю в консоли после отправки формы:

enter image description here

Любые идеи?

ответ

0

использование JSON.stringify(data) способ перед отправкой через http.

return this.http.post(url, JSON.stringify(blog), headers).map((res: Response) => res.json()); 

EDIT:

Асо использовать заголовок, как показано ниже.

import { Headers, Response, RequestOptions} from "@angular/http"; 
... 

let headers = new Headers({ 'Content-Type': 'application/json' }); 
let options = new RequestOptions({ headers: headers }); 
let body = JSON.stringify(blog); 
return this.http.post(url, body, options).map((res: Response) => res.json()); 
+0

Я попытался это, но без успеха ... –

+0

же ошибки проверить мой выбор может быть синтаксис заголовка неверен. – Satendra

+0

Все еще не работает. Очень странно, как хорошо работает на Postman. –

0

Для этой функции:

addTask (task: Task): Observable<Task> { 

    const url = `${this.mainUrl}/entity/node`; 

    const postReturn = this.http.post(url, task, httpHaljson); 

    return postReturn 
} 

Это, как я объявляю АНИ и заголовок:

mainUrl : 'http://drupal.dd:8083', 
    httpHaljson : { 
        headers: new HttpHeaders({ 
        "X-CSRF-Token": "Qfnczb1SUnvOAsEy0A_xuGp_rkompgO2oTkCBOSEItM", 
        "Authorization": "Basic Qfnczb1SUnvOAsEy0A_xuGp_rkompgO2oTkCBOSEItM", // encoded user/pass - this is admin/123qwe 
        // "Content-Type": "application/json" 
        "Content-Type": "application/hal+json" 
        }) 
       } 

и задачи, наиболее важным, что нужно сделать что-то вроде это:

{ 
    "_links": { 
    "type": { 
     "href": "http://drupal.dd:8083/rest/type/node/task" 
    } 
    }, 
    "title": { 
    "value": "I am a new task" 
    }, 
    "type": { 
    "target_id": "task" 
    } 
} 

Для этого после Получать некоторые данные из формы я делаю это:

onSubmit(name: string, body:string): void { 
    let task: any = { 
     _links: null, 
     type: null, 
     title: null, 
     body: null  
    }; 

    task._links = {type: {"href": "http://drupal.dd:8083/rest/type/node/task"} }; 
    task.type = {target_id: "task"}; 
    task.title = {value: name}; 
    task.body = { "": body}; 

     this.taskService.addTask(task) 
     .subscribe(task => { 
      this.tasks.push(task); 
      // console.log(JSON.stringify(task)); 

      this.getTasks(); 
     }); 
    } 

Посмотрите, что мой: console.log (JSON.stringify (задача)); является ключевым, с этим, вы можете видеть, как далеко вы можете создать то, что хочет drupal.

Посмотрите это guide:

Смежные вопросы