首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >角无法解析api调用中的字符串(web 3)

角无法解析api调用中的字符串(web 3)
EN

Stack Overflow用户
提问于 2020-04-04 11:40:43
回答 1查看 321关注 0票数 0

控制器代码:

代码语言:javascript
运行
复制
 [Route("api/[controller]")]
[ApiController]
public class AjaxController : ControllerBase
{
    ApplicationDbContext dbContext = null;
    public AjaxController(ApplicationDbContext ctx)
    {
        dbContext = ctx;
    }

    [HttpGet]
    [Route("GetString")]
    public string GetString()
    {
        return "Hello World";
    }

    [HttpGet]
    [Route("GetCategories")]
    public Category[] GetCategories()
    {
        return dbContext.Categories.ToArray();
    }
}

角码:

代码语言:javascript
运行
复制
http.get<string>(baseUrl + 'api/ajax/GetString').subscribe(result => {
      console.log(result);
    }, error => console.error(error));

虽然角可以在没有错误的情况下解析GetCategories端点,但它不能解析简单得多的GetString。为什么?控制台中的错误是:

错误: SyntaxError:"JSON.parse: JSON数据第1列中的意外字符“​​文本:"Hello”

我试过了,邮递员的反应很好,见截图:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-04 12:39:14

问题是您来自GetString的响应只是返回一串值Hello World,如Postman截图所示。如果要获得有效的响应,则GetCategories端点必须返回有效的JSON。

默认情况下,角假定HttpRequest的响应类型为json类型。

要解决这个问题,请指定为http.get()的第二个参数,即从服务器预期的responseType (在您的情况下,GetString端点将是'text' )。因此,您的http.get()调用应该如下所示:

代码语言:javascript
运行
复制
http.get<string>(baseUrl + 'api/ajax/GetString', { responseType: 'text' }).subscribe(result => {
    console.log(result);
  }, error => console.error(error));

如果您的目的是从GetString返回有效的JSON,那么您需要适当地格式化来自服务器的响应。

请参阅关于HttpRequest - responseType的角度文档。我已经在下面附上了一份。

responseType: 'arraybuffer' | 'blob' | 'json' | 'text' 服务器的预期响应类型。 这用于在将响应返回给请求者之前对响应进行适当的解析。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61027540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档