小编Jes*_*ssy的帖子

Laravel API,如何正确处理错误

任何人都知道在Laravel中处理错误的最佳方法是什么,有什么规则可以遵循?

目前我这样做:

public function store(Request $request)
{
  $plate = Plate::create($request->all());

  if ($plate) {
    return $this->response($this->plateTransformer->transform($plate));
  } else {
    // Error handling ?
    // Error 400 bad request
    $this->setStatusCode(400);
    return $this->responseWithError("Store failed.");
  }
}
Run Code Online (Sandbox Code Playgroud)

setStatusCode和responseWithError来自我的控制器的父亲:

public function setStatusCode($statusCode)
{
    $this->statusCode = $statusCode;

    return $this;
}

public function responseWithError ($message )
{
    return $this->response([
        'error' => [
            'message' => $message,
            'status_code' => $this->getStatusCode()
        ]
    ]);

}
Run Code Online (Sandbox Code Playgroud)

但这是处理API错误的好方法,我看到一些不同的方法来处理网络上的错误,最好的是什么?

谢谢.

api error-handling laravel

11
推荐指数
3
解决办法
1万
查看次数

Laravel检查关系是否为空

我有一个有一些关系的对象,我需要检查这些关系是否为空,我正在尝试检查is_null,isset,!= undefined等,但没有任何作用,这是我得到的关系,它是空的:

object(Illuminate\Database\Eloquent\Collection)#197 (1) {
  ["items":protected]=>
    array(0) {
  }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法轻松检查?谢谢.

relationship laravel

7
推荐指数
3
解决办法
9126
查看次数

Laravel在Mailable中使用MailMessage

我试图在用户注册时向他们发送电子邮件,我创建了一个可邮寄的类:

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;

class WelcomeMail extends Mailable
{
use Queueable, SerializesModels;

public $user;
public $message;
/**
 * Create a new message instance.
 *
 * @return void
 */
public function __construct($user)
{
    $this->user = $user;

    $this->message = (new MailMessage)
        ->greeting('Bonjour '.$user->name)
        ->line('Nous vous remercions de votre inscription.')
        ->line('Pour rappel voici vos informations :')
        ->line('Mail: '.$user->email)
        ->line('Password: '.$user->password);
}

/**
 * Build the message.
 *
 * @return $this
 */
public function …
Run Code Online (Sandbox Code Playgroud)

email laravel

5
推荐指数
3
解决办法
2774
查看次数

Angular 在返回数据之前等待订阅完成

您好,有一个非常简单的函数,可以调用端点来检索我的用户,我在标头中使用它来显示连接的用户,但不想在每次渲染标头时都调用端点。

所以我正在尝试这样的事情:

public getUser(): User {
    if (!this.user) {
     
      this.http.get<User>(environment.apiRoot + '/me').subscribe(res => {
        this.setUser(res);
        return this.user.value;
      }, err => {

      });
    } else {
      return this.user.value;
    }
  }
Run Code Online (Sandbox Code Playgroud)

具有以下setUser功能:

public setUser(u: User): void {
    if (!this.user) {
      this.user = new BehaviorSubject(u);
    } else {
      this.user.next(u);
    }
  }
Run Code Online (Sandbox Code Playgroud)

还有BehaviorSubjectprivate user: BehaviorSubject<User>;

在我的标头组件中,我这样称呼它ngOnInit

this.user = this.appState.getUser();
console.log(this.user);
Run Code Online (Sandbox Code Playgroud)

但console.log中的用户始终是未定义的,为什么它不等待函数中的订阅getUser

observable angular

5
推荐指数
1
解决办法
3万
查看次数

Spring Boot异常处理最佳实践

我有一个关于异常处理的简单问题。我目前有一个应用程序分为多个层:控制器、服务、存储库,我的问题如下:异常处理应该由控制器还是服务来完成?

例子:

控制器:

@PostMapping(value = "/{id}/parents", produces = "application/json; charset=utf-8")
public ResponseEntity<AccommodationRequestDTO> resident(@PathVariable Long id, @Valid @RequestBody ParentsAndUrgencyContactDTO parentsAndUrgencyContactDTO) {
    AccommodationRequestDTO saved;
    try {
        saved = this.service.parents(id, parentsAndUrgencyContactDTO);
    } catch (Exception e) {
        throw new ResponseStatusException(
                HttpStatus.INTERNAL_SERVER_ERROR,
                "Failed to save request", e);
    }
    return ResponseEntity.ok(saved);
}
Run Code Online (Sandbox Code Playgroud)

服务:

public AccommodationRequestDTO parents(Long id, ParentsAndUrgencyContactDTO parentsAndUrgencyContactDTO) {
    Optional<AccommodationRequest> accommodationRequest = repository.findById(id);

    if (accommodationRequest.isPresent()) {
        AccommodationRequest saved = accommodationRequest.get();
        Parent firstParent = parentMapper.toEntity(parentsAndUrgencyContactDTO.getFirstParent());
        Parent secondParent = parentMapper.toEntity(parentsAndUrgencyContactDTO.getSecondParent());

        firstParent = parentRepository.save(firstParent);
        secondParent = parentRepository.save(secondParent);

        saved.setFirstParent(firstParent); …
Run Code Online (Sandbox Code Playgroud)

spring spring-boot

5
推荐指数
2
解决办法
2万
查看次数

SimpMessagingTemplate 没有合格的 bean 类型

我正在尝试在我的项目中使用该类SimpMessagingTemplate通过 websocket 发送一些数据。问题是我总是出错,这是完整的错误:

Error creating bean with name 'webSocketUserNotificationManagerImpl' defined in URL [...]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.messaging.simp.SimpMessagingTemplate' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
Run Code Online (Sandbox Code Playgroud)

这是webSocketuserNotificationManagerImpl服务:

@Service
public class WebSocketUserNotificationManagerImpl implements UserNotificationManager {

    /**
     * Template to use to send back a message to the user via Web-socket.
     */
    private SimpMessagingTemplate template;

    public WebSocketUserNotificationManagerImpl(SimpMessagingTemplate template) {
        this.template …
Run Code Online (Sandbox Code Playgroud)

spring spring-websocket

2
推荐指数
1
解决办法
3038
查看次数

AngularJS 为按钮组中的按钮提供活动类

我有一个带有一些按钮的按钮组,两个用 html 创建,其他用 ng-repeat 创建。我希望单击按钮时有一个活动类,以便我可以自定义它以显示它已激活。

所以这就是我所做的:

<div class="btn-group" role="group" aria-label="Basic example"
     ng-init="selectedTab = 'raw'">

  <button class="btn"
     ng-click="selectView('raw'); selectedTab = 'raw'; console.log(selectedTab);"
     ng-class="{'active':selectedTab === 'raw'}">Raw data
  </button>
  <button class="btn"
     ng-click="selectView('summary'); selectedTab = 'summary'; console.log(selectedTab);"  
     ng-class="{'active':selectedTab === 'summary'}">Summary
  </button>

  <button class="btn" ng-repeat="(key, value) in views"
          ng-click="selectView(key); selectedTab = key; console.log(selectedTab);"
          ng-class="{'active':selectedTab === key}">
    {{ key }}
  </button>
</div>
Run Code Online (Sandbox Code Playgroud)

我的问题是,对于两个第一个都正常工作,当我点击第一个按钮时,类被添加,当我点击第二个时,类从第一个中删除并添加到第二个中。

问题在于 ng-repeat 生成的按钮,当我点击它们时,它会将活动类添加到按钮中,但是当我点击另一个按钮时,它不会删除该类,因此它们都可以拥有 activate 类。

我究竟做错了什么 ?

angularjs

0
推荐指数
1
解决办法
1201
查看次数