Есть простой метод, возвращающий Ok:
[HttpGet("request_name")]
public IActionResult request_name()
{
using (var db = new WordContext())
{
return Ok("This is ok response string");
}
}
И простой запрос в ngx:
request_name() {
return this.http
.get<string>(`${this.apiUrl}/request_name`);
}.subscribe(x => {
});
Я вижу код 200 «Это нормально, строка ответа» в Chrome, но в консоли Chrome есть сообщение об ошибке:
ERROR HttpErrorResponse {headers: HttpHeaders, status: 200, statusText: "OK", url: "http://localhost:4200/main/name/request_name", ok: false, …}
Что это значит и как решить?
Updated
Сообщение об ошибке:
error:
error: SyntaxError: Unexpected token T in JSON at position 0 at JSON.parse (<anonymous>) at XMLHttpRequest.onLoad (http://localhost:5010/vendor.js:7457:51) at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (http://localhost:5010/polyfills.js:2743:31) at Object.onInvokeTask (http://localhost:5010/vendor.js:36915:33) at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (http://localhost:5010/polyfills.js:2742:36) at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (http://localhost:5010/polyfills.js:2510:47) at ZoneTask.push../node_modules/zone.js/dist/zone.js.ZoneTask.invokeTask [as invoke] (http://localhost:5010/polyfills.js:2818:34) at invokeTask (http://localhost:5010/polyfills.js:3862:14) at XMLHttpRequest.globalZoneAwareCallback (http://localhost:5010/polyfills.js:3888:17)
message: "Unexpected token T in JSON at position 0"
stack: "SyntaxError: Unexpected token T in JSON at position 0↵ at JSON.parse (<anonymous>)↵ at XMLHttpRequest.onLoad (http://localhost:5010/vendor.js:7457:51)↵ at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (http://localhost:5010/polyfills.js:2743:31)↵ at Object.onInvokeTask (http://localhost:5010/vendor.js:36915:33)↵ at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (http://localhost:5010/polyfills.js:2742:36)↵ at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (http://localhost:5010/polyfills.js:2510:47)↵ at ZoneTask.push../node_modules/zone.js/dist/zone.js.ZoneTask.invokeTask [as invoke] (http://localhost:5010/polyfills.js:2818:34)↵ at invokeTask (http://localhost:5010/polyfills.js:3862:14)↵ at XMLHttpRequest.globalZoneAwareCallback (http://localhost:5010/polyfills.js:3888:17)"
__proto__: Error
text: "This is ok response string"
__proto__: Object
headers: HttpHeaders
lazyInit: ƒ ()
lazyUpdate: null
normalizedNames: Map(0) {}
__proto__: Object
message: "Http failure during parsing for http://localhost:5005/main/word/request_name"
name: "HttpErrorResponse"
ok: false
status: 200
statusText: "OK"
url: "http://localhost:5005/main/word/request_name"
@ Jota.Toledo defaultErrorLogger @ core.js: 1673 push ../ node_modules/@angular/core/fesm5/core.js.ErrorHandler .handleError @ core. js: 1719 next @ core.js: 4311 schedulerFn @ core .js: 3551 push ../ node_modules / rxjs / _esm5 / internal / Subscriber.js.SafeSu подписчик .__ tryOrUnsu b @ Subscriber.js: 19 6 push ../ node_modules / rxjs / _esm5 / internal / Subscriber.js .SafeSu bscriber.next @ Subs criber.js: 134 push ../ node_modules / rxjs / _esm5 / internal / Subscriber.js.Subscr iber._next @ Subscriber.js: 77 push ../ node_modules / rxjs /_esm5/internal/Subscriber.js.Subscr iber.next @ Subscrib er.js: 54 и т. д.
Не трассировка стека. Я имею в виду, что у вас есть ERROR: HttpErrorResponse ..., которые являются деталями объекта ошибки. Не могли бы вы обновить свой вопрос, указав полную информацию об объекте?
Ах я вижу. Я добавил детали к вопросу.
Экземпляр ошибки ясен, HttpClient пытается проанализировать недопустимую строку JSON. См. angular.io/guide/http#requesting-non-json-data





Если ваш тип ответа не JSON, он просто передаст ответ на ошибку.
Попробуйте что-то вроде этого
request_name() {
return this.http
.get<string>(`${this.apiUrl}/request_name`, {responseType: 'text'});
}.subscribe(x => {
});
Принимая во внимание, что не используйте subscribe, используйте оператор pipe и tap для чтения ответа - надеюсь, я думаю, что вы используете HttpClient в angular
return this.http
.get<string>(`${this.apiUrl}/request_name`, {responseType: 'text'});
}.pipe(tap(res => {
console.info(res);
}));
вам не нужно .pipe (map (res => {...}). map предназначена для изменения ответа, если вы хотите проверить значение use pipe (нажмите (res => {...})
Чтобы отключить запрос, я только что сказал, что map изменился, как вы сказали - Спасибо.
что такое полный журнал ошибок?