我一直在开发一个与PHP/Apache Web服务对话的Angular JS应用程序.
到目前为止它一直在POST和GET请求工作正常,但对于PUT我有以下错误
Method PUT is not allowed by Access-Control-Allow-Methods in preflight response.
我已经用Postman测试了API,它运行得很好
有什么想法来解决我的问题吗?谢谢
请注意,API服务器Apache已经具有以下配置
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept"
Header set Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS"
Options All
AllowOverride All
Allow from all
Run Code Online (Sandbox Code Playgroud)
Chrome有这个响应标题
HTTP/1.1 200 OK
Date: Mon, 15 Feb 2016 02:52:56 GMT
Server: Apache/2.4.7 (Ubuntu)
X-Powered-By: PHP/5.5.9-1ubuntu4.14
Allow: GET,HEAD,PUT,PATCH,DELETE
Cache-Control: no-cache
Set-Cookie: laravel_session=eyJpdiI6IldvM3Z5eUpKcUI5Q0RXam5UN283TEE9PSIsInZhbHVlIjoiV3FnTVpUcFliWjZvczFrM2VuYXpBamI5NmIwR24rdThPWGRuMUZjbjd5K0I2N3F1REp4ZFJVc3U3QnhCZmxmZ0ZONDU4SEVtWm42SUVEWmJhRmF6M1E9PSIsIm1hYyI6ImMzOTVlNDZhZmNjYWNlM2I1N2FjYjQ4N2FhZDc5ZWY2MWJhYTdiNDBlMWExMGJkYzczYzE1MTczMzAyYzVkMjEifQ%3D%3D; expires=Mon, 15-Feb-2016 04:52:56 GMT; Max-Age=7200; path=/; httponly
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept
Content-Length: …Run Code Online (Sandbox Code Playgroud) 我理解好处或存储库模式,但我无法理解在 Symfony3 Doctrine 中有Doctrine\ORM\EntityManager和\Doctrine\ORM\EntityRepository
应该将存储库注入控制器还是实体管理器?
编辑 正确的问题应该是:从控制器访问存储库的正确方法是什么?
实体管理器是否应该包含任何查询?
编辑
正确的问题应该是:服务是否应该包含查询?@MateuszSip 已经解释过了,可以通过注入实体管理器来完成
是否应该将自定义功能getAvailableManagers放在存储库或服务中?(manager存储库在哪里,确定有一些逻辑available manager)
findAllManager,它应该在存储库还是实体管理器中?目前我正在使用 Symfony3。非常感谢
干杯,
编辑 与@MateuszSip 交谈(感谢队友),我决定用下面的例子让我的问题更清楚。请注意,下面的代码并不代表真正的问题
控制器
Class ManagementController
{
public function assignManager($projectType)
{
// Grabbing a service
$s = $this->get('mycompany_management_management_service')
$managers = $s->findAvailableManagers();
$managers = $s->checkCapability($managers, $projectType);
return $managers
}
}
Run Code Online (Sandbox Code Playgroud)
存储库
class ManagerRepository extends \Doctrine\ORM\EntityRepository
{
public function findAvailableManagers()
{
...
return $managers
}
public function checkCapability($managers, $type)
{
... …Run Code Online (Sandbox Code Playgroud) doctrine repository-design repository-pattern symfony doctrine-orm
我需要帮助为 Laravel 创建单元测试用例。它是一个 API 端点,接受 json 作为 POST 有效负载(不是 POST 表单),并且基本上只是基于该 json 对象在数据库中创建一个条目。API 工作正常,但我在创建单元测试时遇到问题。
控制器代码包含
$request = Request::instance();
$content = $request->getContent();
$inputRequest = json_decode($content);
Run Code Online (Sandbox Code Playgroud)
我不知道如何将有效负载传递到单元测试代码中(扩展 Illuminate\Foundation\Testing\TestCase)
任何人都可以提供帮助?
谢谢堆
我有一个用Laravel(Dingo)构建的API,它运行得很好.但是我在实现phpunit来测试我的API时遇到了问题
class ProductControllerTest extends TestCase
{
public function testInsertProductCase()
{
$data = array(
, "description" => "Expensive Pen"
, "price" => 100
);
$server = array();
$this->be($this->apiUser);
$this->response = $this->call('POST', '/products', [], [], $server, json_encode($data));
$this->assertTrue($this->response->isOk());
$this->assertJson($this->response->getContent());
}
}
Run Code Online (Sandbox Code Playgroud)
同时我的API端点指向此控制器功能
private function store()
{
// This always returns null
$shortInput = Input::only("price");
$rules = [
"price" => ["required"]
];
$validator = Validator::make($shortInput, $rules);
// the code continues
...
}
Run Code Online (Sandbox Code Playgroud)
但是它总是失败,因为API无法识别有效负载.Input :: getContent()返回JSON,但Input :: only()返回空白.进一步调查这是因为如果请求有效负载的内容类型是JSON,则Input :: only()仅返回值
那么......如何设置上面的phpunit代码以使用内容类型的application/json?我假设它必须与之有关$server但我不知道是什么
编辑:我原来的想法实际上有两个问题 …
我有一个Buildkite管道运行,但我们最近改变了我们的git仓库.如何将新仓库挂钩到现有管道?
我知道你可以更改repo url,但webhook网址怎么样?
似乎无法在任何地方找到答案.
谢谢您的帮助
在Symfony 3中,您如何根据域驱动设计(DDD)区分以下内容?
我知道该学说与Symfony脱钩了(即可以完全省略)。但是,没有教义的Symfony项目中的存储库是哪一个呢?也许Symfony(没有教义)实际上不是真的遵循DDD吗?
编辑
我尝试模拟以下情况以使问题更清楚
控制器具有返回项目的所有可用经理的功能
class ManagementController
public function getAvailableManagers(Array $project)
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
可用的经理意味着他们手头上没有任何项目,并且该项目属于其专业领域(例如,客户服务,业务关系,物流等)
但是,由于设计不佳,专用域未存储在数据库中,而是需要通过API调用被调用到单独的HR系统。稍后将其集成到数据库中
我本以为(随时可以纠正我)管理器应该是一个存储库类,因为它当前从2个不同的来源获取其信息。问题是……我应该为此使用教义存储库吗?还是应该只是普通实体或服务?
class ReplacementInstructionRepository extends \Doctrine\ORM\EntityRepository
{
private $id;
private $name;
private $speciality;
private $projects;
}
Run Code Online (Sandbox Code Playgroud)
我需要有关如何拆分的指南。谢谢
干杯,
只是想知道我是否有以下puppet文件,我想将它们分成单独的文件.我必须创建模块吗?我不能只包括它们吗?
node default {
include mysql
}
class mysql {
# Make sure MySQL is ...
notify {"Mysql":}
# installed
package { 'mysql':
require => Exec['apt-update'], # require 'apt-update' before installing
ensure => installed,
}
# and running
service { 'mysql':
ensure => running,
enable => true,
}
}
...
Run Code Online (Sandbox Code Playgroud)
我只是想把mysql类拿出来放在单独的文件中.怎么做这个简单的事情?顺便说一句,我正在使用无主的木偶
编辑
很大的道歉,事实是我只使用没有流浪汉的傀儡.但由于我不是一个专家,当我的问题有一个修改,包括流浪汉我接受了它.对不起,请允许我修改我的问题
我可以在没有流浪汉的情况下进行分离吗?如果我必须如此.
谢谢