404 API 请求,在 prod 模式下分页,但在 dev 中工作

Posted

技术标签:

【中文标题】404 API 请求,在 prod 模式下分页,但在 dev 中工作【英文标题】:404 API request with pagination in prod mode but works in dev 【发布时间】:2021-11-22 09:41:15 【问题描述】:

我使用 Laravel API 和 Angular 服务来制作我的应用程序。 我正在使用 Angular 为我的数组进行分页,并在我的服务中使用此函数发出 HTTP 请求:

getPagination(page): Observable<any> 
     return this.httpClient.get<any>(environment.apiBaseUrl + 'test/?page=' + page);
  

当我触发它时,我通过分页获取数据,但是当我想在 prod 中获取另一个页面时,我得到一个 404 错误,因为它使用了一个我什至没有给出的 URL。

我应该有这个网址:

http://prodUrl/back/api/test?page=2

但我明白了:

http://prodUrl/api/test?page=2

这是 Laravel API 中的函数

public function getAll()
    
        $stuff = MyStuff::orderByDesc('updated_at')->paginate(50); 
        return response()->json($stuff, 200);
     

路线:

 Route::get('test', [Controller::class, 'getAll']);

当我在第一次调用中对environment.apiBaseUrl 进行console.log() 以获取第一页时,我有正确的网址和相同的内容:

current_page: 1
first_page_url: "http://prodUrl/back/api/test?page=1"
from: 1
last_page: 3
last_page_url: "http://prodUrl/back/api/test?page=3"
links: (5) […, …, …, …, …]
next_page_url: "http://prodUrl/back/api/test?page=2"
path: "http://prodUrl/back/api/test"
per_page: 50
prev_page_url: null
to: 50
total: 146

那么为什么 HTTP 请求不使用它呢?

【问题讨论】:

【参考方案1】:

我找到了一种方法来获取我需要的 url,方法是传递当前页面的 url,然后使用 substring() 删除页码以添加如下参数:

 let urlSplit = url.substring(0, url.indexOf('=') + 1);
 return this.httpClient.get<any>(urlSplit + page);

【讨论】:

以上是关于404 API 请求,在 prod 模式下分页,但在 dev 中工作的主要内容,如果未能解决你的问题,请参考以下文章

请求错误:在 --prod 模式下构建时,Angular 中的“推荐人策略:严格原产地时跨原产地”

第一零五天上课 PHP TP框架下分页

Autodesk Forge 数据管理 API 获取***文件夹请求现在返回 404 Not Found 今天始终如一,但上周工作

Web API 2发布404s,但Get工作

Web API + jQuery AJAX DELETE 请求返回 404

请求用户电子邮件时返回 404 Not Found [ASP.NET Web API]