V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Oktfolio  ›  全部回复第 19 页 / 共 21 页
回复总数  402
1 ... 11  12  13  14  15  16  17  18  19  20 ... 21  
2020-06-29 15:21:06 +08:00
回复了 lvjiefly 创建的主题 程序员 PHP 服务端如何接受阿里云物联网平台的事件?
@lvjiefly php-amqplib
2020-06-24 11:11:45 +08:00
回复了 Vimax 创建的主题 Java 请教如何有效的使用 ResponseEntity?
package com.oktfolio.tero.common;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.google.common.base.Strings;
import com.oktfolio.tero.common.enums.ResultCode;
import com.oktfolio.tero.common.enums.ResultCodeEnum;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.time.LocalDateTime;
import java.util.Objects;

/**
* @author oktfolio [email protected]
* @date 2020/06/08
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ResultEntity<T> {
protected String code;
protected String message;
protected T data;
protected HttpStatus status;
@JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
protected LocalDateTime datetime;

public String getCode() {
return code;
}

public String getMessage() {
return message;
}

public T getData() {
return data;
}

public HttpStatus getStatus() {
return status;
}

public LocalDateTime getDatetime() {
return datetime;
}

private ResultEntity() {
}

public ResultEntity(String code, String message, T data, HttpStatus status, LocalDateTime datetime) {
this.code = code;
this.message = message;
this.data = data;
this.status = status;
this.datetime = datetime;
}

public static Builder builder() {
return new Builder();
}

public static class Builder {

protected String code;
protected String message;
protected HttpStatus status;
protected LocalDateTime datetime;

public Builder code(String code) {
this.code = code;
return this;
}

public Builder message(String message) {
this.message = message;
return this;
}

public Builder datetime(LocalDateTime datetime) {
this.datetime = datetime;
return this;
}

public Builder status(@Nonnull HttpStatus status) {
this.status = status;
return this;
}

public <T> ResultEntity<T> data(@Nullable T data) {
return new ResultEntity<>(code, message, data, status, datetime);
}

public <T> ResultEntity<T> build() {
return this.data(null);
}

}

public static <T> ResultEntity<T> ok() {
return ResultEntity.builder()
.status(HttpStatus.OK)
.build();
}

public static <T> ResultEntity<T> created() {
return ResultEntity.builder()
.status(HttpStatus.CREATED)
.build();
}

public static <T> ResultEntity<T> noContent() {
return ResultEntity.builder()
.status(HttpStatus.NO_CONTENT)
.build();
}

public static <T> ResultEntity<T> ok(T data) {
return ResultEntity.builder()
.status(HttpStatus.OK)
.datetime(LocalDateTime.now())
.data(data);
}

public static <T> ResultEntity<T> created(T data) {
return ResultEntity.builder()
.status(HttpStatus.CREATED)
.data(data);
}

public static <T> ResultEntity<T> of(@Nonnull ResultCode resultCode) {
return ResultEntity.builder()
.status(resultCode.status())
.code(resultCode.value())
.message(resultCode.message())
.datetime(LocalDateTime.now())
.build();
}

public static <T> ResultEntity<T> error() {
return ResultEntity.builder()
.status(ResultCodeEnum.ERROR.status())
.code(ResultCodeEnum.ERROR.value())
.message(ResultCodeEnum.ERROR.message())
.datetime(LocalDateTime.now())
.build();
}

public static <T> ResultEntity<T> error(@Nonnull HttpStatus status, @Nonnull String message) {
return ResultEntity.builder()
.status(status)
.code(ResultCodeEnum.ERROR.value())
.message(message)
.datetime(LocalDateTime.now())
.build();
}

public static <T> ResultEntity<T> notFound(@Nonnull ResultCode resultCode) {
return ResultEntity.builder()
.status(HttpStatus.NOT_FOUND)
.code(resultCode.value())
.message(resultCode.message())
.datetime(LocalDateTime.now())
.build();
}

public static <T> ResultEntity<T> badRequest(@Nonnull ResultCode resultCode) {
return ResultEntity.builder()
.status(HttpStatus.BAD_REQUEST)
.code(resultCode.value())
.message(resultCode.message())
.build();
}

public static <T> ResultEntity<T> unauthorized(@Nonnull ResultCode resultCode) {
return ResultEntity.builder()
.status(HttpStatus.UNAUTHORIZED)
.code(resultCode.value())
.message(resultCode.message())
.datetime(LocalDateTime.now())
.build();
}

public static <T> ResultEntity<T> unauthorized(String message) {
return ResultEntity.builder()
.status(HttpStatus.UNAUTHORIZED)
.code(ResultCodeEnum.ERROR.value())
.message(message)
.datetime(LocalDateTime.now())
.build();
}

public static <T> ResultEntity<T> forbidden(@Nonnull ResultCode resultCode) {
return ResultEntity.builder()
.status(HttpStatus.FORBIDDEN)
.code(resultCode.value())
.message(resultCode.message())
.datetime(LocalDateTime.now())
.build();
}

public static <T> ResultEntity<T> created(@Nonnull ResultCode resultCode) {
return ResultEntity.builder()
.status(HttpStatus.CREATED)
.code(resultCode.value())
.message(resultCode.message())
.build();
}

public static <T> ResultEntity<T> internalServerError() {
return ResultEntity.builder()
.status(ResultCodeEnum.INTERNAL_SERVER_ERROR.status())
.code(ResultCodeEnum.INTERNAL_SERVER_ERROR.value())
.message(ResultCodeEnum.INTERNAL_SERVER_ERROR.message())
.datetime(LocalDateTime.now())
.build();
}

public static <T> ResultEntity<T> internalServerError(@Nonnull ResultCode resultCode) {
return ResultEntity.builder()
.status(HttpStatus.INTERNAL_SERVER_ERROR)
.code(resultCode.value())
.message(resultCode.message())
.datetime(LocalDateTime.now())
.build();
}

public ResponseEntity<Object> responseEntity() {
if (Objects.isNull(this.data)
&& Strings.isNullOrEmpty(this.code)
&& Strings.isNullOrEmpty(this.message)
&& !Objects.isNull(this.status)) {
return new ResponseEntity<>(this.getStatus());
} else {
return new ResponseEntity<>(this, this.getStatus());
}
}
}

我是这么玩的。
2020-06-24 10:56:05 +08:00
回复了 luxinfl 创建的主题 程序员 DURID 连接池是不是有问题的啊
Hikari 不香吗?用什么 Druid ?
2020-06-23 11:13:52 +08:00
回复了 AlphaTr 创建的主题 程序员 Deno 将停止在内部代码中继续使用 TypeScript
我这个 TS 吹就很尴尬
2020-06-22 16:33:41 +08:00
回复了 noble4cc 创建的主题 Java Java 中有类似于 hutool 这种大而全的工具包吗
那为什么不用 Hutool ?
2020-06-22 11:09:03 +08:00
回复了 sanghongxv 创建的主题 程序员 大佬们,尝试用 exprss + mongoose 写了个 restful 望各路大神指导
杠一下,这并不 RESTful 。
2020-06-10 13:50:01 +08:00
回复了 marcosteam 创建的主题 React Fluent UI 是我用过的最难受的 React 库,没有之一!
TS 好评
2020-06-01 14:01:16 +08:00
回复了 sunshinev 创建的主题 程序员 grpc 主要用来作什么?
gRPC is a modern open source high performance RPC framework that can run in any environment.
2020-05-29 15:58:24 +08:00
回复了 xiaoming1992 创建的主题 Angular angular 模板不够"typescript", 是我的姿势不对吗?
let product of products 不是 TypeScript 的特性吗? products 不就是 Product[] 类型吗?遍历出来不就是 Product 类型吗?
@sunny352787 以前的事情啦,现在应该没有了。
@Oktfolio 但是我这样就需要兼顾 HTTP Status Code 和自定义 Code 。
```
public class ResultEntity {
private Integer code;
private String message;
private Object data;
@JsonIgnore
private HttpStatus status;
@JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
private LocalDateTime datetime;
}
```

个人项目的话。GET 以外的方法结果为 20x 的时候,除特殊情况什么都不返回,GET 只返回内容,没有上面的封装。有错误的时候才上面封装的内容。status 是方便在 service 层返回状态给 controller 用的,实际是会以 http 状态码返回给前端。会用到 GET POST DELETE PUT PATCH 五种 Method 。
```
public class ResultEntity implements Serializable {

private boolean success;
private String errorMsg;
private int errorCode;
private String errorLevel;
private Object content;
}

public class PageResultEntity implements Serializable {

private int currentPage;
private int pageSize;
private long totalCount;
private int pages;
private List<Object> data;

}
```
工作嘛,全用 GET POST,全返回 200,然后就是上面定义的内容了。
2020-04-30 10:47:33 +08:00
回复了 linuxsteam 创建的主题 Java spring security 登录拦截(过滤) 那种更符合规范?
/login 不用管,实现自己的 AuthenticationSuccessHandler 。然后 Jwt 鉴权过滤器。当然我自己还实现了一个 json 登录的过滤器。
@yuyu12 一个 StringUtils 都不下二十个包路径。
2020-04-17 22:59:47 +08:00
回复了 zealinux 创建的主题 MySQL MySQL 中 varchar(100)与 varchar(255)区别是什么?
索引。
2020-04-16 19:57:58 +08:00
回复了 excxapp 创建的主题 程序员 请教 iot 设备活跃有什么开源的 Health monitoring 方法库
最后上报时间
2020-04-16 17:14:00 +08:00
回复了 pliex 创建的主题 程序员 全栈后台管理系统脚手架 gin-vue-admin 2.0 版本介绍
有个差不多的实现,坑挖了 2 年,一直没填。从 vendor 到 dep 到 mod,重新传了好几次,就是一行代码都没动。

```
[request_definition]
r = sub, obj, act

[policy_definition]
p = sub, obj, act

[role_definition]
g = _, _

[policy_effect]
e = some(where (p.eft == allow))

[matchers]
m = g(r.sub, p.sub) && keyMatch(r.obj, p.obj) && (r.act == p.act || p.act == "*")
```

```
func CasbinAuth() gin.HandlerFunc {
return func(c *gin.Context) {
claims := parseClaims(c)
user := claims.User.Username
path := c.Request.URL.Path
method := c.Request.Method

if !casbin.E.Enforce(user, path, method) {

result := common.Result{
Code: 20000,
Message: "login success",
Timestamp: time.Now().Unix(),
}

c.JSON( http.StatusUnauthorized, result)
c.Abort()
return
}
c.Next()
}
}
```
2020-03-23 11:43:43 +08:00
回复了 haohong725 创建的主题 Java 请问什么样的 Java 项目用 Spring 是比较好的?
@ARhen Servlet 加注解其实也还好,缺点嘛...不支持 RESTful 。
2020-03-23 11:18:39 +08:00
回复了 a719114136 创建的主题 浏览器 迫于常用浏览器 n 久不更新了,求一组 chrome 插件
360Chrome
2020-03-05 15:13:30 +08:00
回复了 afirefish 创建的主题 Java 做个小调查,有多少公司已经迁移到 JDK11 了?或者使用 OpenJDK?
自用 Corretto 11
1 ... 11  12  13  14  15  16  17  18  19  20 ... 21  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   1155 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 32ms · UTC 17:20 · PVG 01:20 · LAX 09:20 · JFK 12:20
♥ Do have faith in what you're doing.