- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在 Routes
文件夹中的 api.php
如下所示:
<?php
use Illuminate\Http\Request;
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/
Route::post('login', 'Api\User\LoginController@login');
和web.php
如下:
<?php
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/system/login', 'System\LoginController@index');
这是 System\LoginController.php
的 index
方法的代码:
class LoginController extends Controller
{
use Requestable;
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
$response = $this->post('api/login',$request->all());
$responseArray = json_decode($response->getBody(), true);
session()->put('access_token',$responseArray['data']['token']);
return redirect()->to('/system/dashboard');
//
}
所以基本上,我在同一个项目中使用 api。项目文件夹位于 xampp
的 htdocs
中。所以每当我打开并使用 Apache 服务器时,api 都会发送数据就好了。但是,如果我使用 php artisan serve
命令为项目提供服务,每次我尝试从 api 获取数据时,服务器都不会抛出任何错误,只是挂断并且不会即使经过很长时间也完全返回数据。我想这是服务器如何与 artisan serve 一起工作的问题。有人请帮我解决这个问题吗?
最佳答案
如果您仔细观察,这就是它的工作原理。
当您在浏览器中点击 /system/login
(Web 请求)时,它会触发 php,它会寻找恰好是 System\LoginController@index 的正确路径
。然后它运行 LoginController 中的索引函数。
现在它在运行中找到下面的行(API 请求)
$response = $this->post('api/login',$request->all());
所以在这一行中,相同的 php 实例(正在为网络请求提供服务)尝试调用自身!并且网络请求还没有完成。还要记住 PHP 的同步特性,它不会移动到下一行,直到当前行返回。
如果您注意到 here PHP 的内置服务器是一个单线程进程
The web server runs only one single-threaded process, so PHP applications will stall if a request is blocked.
它一次只能处理一个请求。因此,API 请求只是等待(在队列中)处理,因为 Web 请求尚未完成,Web 请求正在等待其刚刚进行的 API 调用的答案.This deadlock is the reason why everything gets hanged up.In case of production servers like Apache server this doesn't happen as Apache can spawn-off multiple processes/threads as and when needed 并将它们委托(delegate)给单独的 php 实例进行处理.
关于php - laravel artisan served 服务器在同一项目中请求 api.php 上的路由时挂起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54120966/
我的 Angular 应用程序中有以下代码。 app.config(function($routeProvider, $locationProvider) { $locationProvider
这就是我在 Backbone 中进行路由的方式,在决定调用哪个外部模板之前,首先获取路由及其参数。我觉得这很灵活。 var Router = Backbone.Router.extend({
我是 MEAN 堆栈领域的新手,我对 Angular 路线有一些疑问。为什么我应该在客户端重新创建后端已经用express.js创建的路由,有什么好处?这是 Angular.js 工作的唯一方式吗?我
我可以设置一条从根级 URL 进行映射的路由吗? http://localhost:49658/ 我使用的是 VS2010 内置 Web 服务器。 尝试使用空白或单斜杠 URL 字符串设置路由不起作用
我有一个现有的应用程序 Rails 3.2.17和 Angular js。我想在现有应用程序中包含 Activeadmin。 我遵循了 active-admin post from ryan bate
我正在关注 this Angular 中的路由教程,它就是行不通。当我使用“comp”选择器放置它的 HTML 代码时,它可以工作,但是当我尝试使用路由器 socket 对其进行路由时,它只显示来自
多个路由通过路由器进行管理。 前端路由的概念和原理 (编程中的) 路由 (router)就是一组 key-value 对应关系,分为:后端路由和前端路由 后端路由
服务器需要根据不同的URL或请求来执行不一样的操作,我们可以通过路由来实现这个步骤。 第一步我们需要先解析出请求URL的路径,我们引入url模块。 我们来给onRequest()函数加上一些逻辑
我正在为 Angular 6 应用程序设置路由,我想要一条可以匹配可变数量的段的路由。目前我有一个看起来像这样的路由配置: const routes: Routes = [ { path: '',
用户将点击电子邮件中的链接,如下所示: do-something/doSomething?thing=XXXXXXXXXXX 如何在路由器中定义路由并订阅获取参数? 目前在我的路由器中: {
我有一个具有以下结构的 Angular (4) 应用程序: app.module bi.module auth.module 路由应该是: / -> redirect to /home /
我正在使用 WCF 4 路由服务,并且需要以编程方式配置服务(而不是通过配置)。我见过的这样做的例子很少见,创建一个 MessageFilterTable 如下: var fi
我需要创建一个“路由”服务。我正在尝试使用 .Net 的 System.ServiceModel.Routing.IRequestReplyRouter我可以让它只在 HTTP 模式下工作,而不是在
例如,链接: /shop/phones/brend/apple/display/retina/color/red 在哪里: phones - category alias brend -
非常基本的问题,我很惊讶我找不到答案。我刚刚开始研究 django 并进行了开箱即用的安装。创建了一个项目并创建了一个应用程序。 urls.py 的默认内容很简单: urlpatterns = [
我已经实现了 WCF 路由服务;我还希望该服务(或类似的 WCF 服务)以规定的和统一的(与内容无关的)方式转换有效负载。例如,有效负载将始终采用 Foo 的形式。我想把它作为Bar在所有情况下。我很
我想使用 $locationProvider.html5Mode(true); 在 angularJs 中删除 # 哈希;但这导致所有 URL 都通过 angularJs 进行路由。我如何设置它以便只
我要听导航开始事件并判断其是否url属性是 /logout . 如果是这样,路由器应该停止触发连续事件,例如 路线已识别 , GuardsCheckStart , ChildActivationSta
有人可以解释我如何使用参数路由到 URL 吗? 例如id 喜欢点击产品并通过Id打开产品的更多信息。 我的路由到目前为止... angular.module('shop', ["cus
我目前正在 Angular: 7.2.14 上构建,想看看是否有人可以解释如何使用路由保护、共享服务或其他方式等重定向查询参数。 我试图解决的问题要求查询参数从根 Uri 路径传入,然后将路由重定向到
我是一名优秀的程序员,十分优秀!