我正在使用dropwizard (jersey,jackson)创建一个REST API,偶然发现了一些我似乎找不到答案的问题。我想建立一个基于json文件的sql查询。这将通过映射(标准、值)来完成。我意识到这一点有些困难:
代码:
用户资源:
@POST
@Path("/list")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public List<User> getUser(@Auth UserToken token, JSONObject json) {
return userDAO.getUserByCriteria(json);
}
用户道:
List<User> getInvoiceByCriteria(@Bind("json") JSONObject json);
> < li>
当我开始工作时,我该如何着手?我的代码看起来是这样的(似乎无法获得为这个代码格式化的代码块):
@sqlQuery("从用户限制10中选择*")
@ RegisterRowMapper(user mapper . class)
列出getUserByCrit的(@绑定("json")地图json);
我想这样做:
@SqlQuery("SELECT * FROM user WHERE crit1 = :crit1 AND crit2 = :crit2 LIMIT 10")
@RegisterRowMapper(UserMapper.class)
List<User> getUserByCriteria(@Bind("json") Map json){
//EXTRACT VALUES OF MAP HERE
//
};
我意识到这是一个相当模糊的问题。问题是,我在REST方面是一个很大的新手,我遇到的问题并不常见(或者我在寻找错误的东西)。非常感谢任何帮助/见解!
关于 http/rest 的 Xtra 问题:我觉得这应该是一个 GET 请求而不是 POST,但我的高级 REST 客户端不允许在 GET 请求中使用正文。我在网上发现这通常不这样做,但允许。在这里使用 POST 可以吗?
我将首先回答你的另一个问题:
GET 的目标是使用 URI 和 URI 中发送的参数检索数据。黑白可以或应该有所不同。与带有GET的body相同,您可以使用GET发送正文,但是您没有遵循HTTP指南,GET和POST的目的也是混合的。
现在回答你的问题。您正在发送<code>JSONObject json</code>
public List<User> getUser(@Auth UserToken token, JSONObject json) {
return userDAO.getUserByCriteria(json);
}
但你和地图匹配。地图基本上是娱乐类型擦除
List<User> getInvoiceByCriteria(@Bind("json") Map<K extends String , V extends MyObject> json);
下面是一个使用Mapper的DAO接口的简单示例:
@RegisterMapper(EmployeeMapper.class)
public interface EmployeeDao {
@SqlQuery("select * from employee;")
public List<Employee> getEmployees();
@SqlQuery("select * from employee where id = :id")
public Employee getEmployee(@Bind("id") final int id);
@SqlUpdate("insert into employee(name, department, salary) values(:name, :department, :salary)")
void createEmployee(@BindBean final Employee employee);
@SqlUpdate("update employee set name = coalesce(:name, name), " +
" department = coalesce(:department, department), salary = coalesce(:salary, salary)" +
" where id = :id")
void editEmployee(@BindBean final Employee employee);
@SqlUpdate("delete from employee where id = :id")
int deleteEmployee(@Bind("id") final int id);
@SqlQuery("select last_insert_id();")
public int lastInsertId();
}
下面是上面使用的雇员映射器类:
public class EmployeeMapper implements ResultSetMapper<Employee> {
private static final String ID = "id";
private static final String NAME = "name";
private static final String DEPARTMENT = "department";
private static final String SALARY = "salary";
public Employee map(int i, ResultSet resultSet, StatementContext statementContext)
throws SQLException {
Employee employee = new Employee(resultSet.getString(NAME), resultSet.getString(DEPARTMENT),resultSet.getInt(SALARY));
employee.setId(resultSet.getInt(ID));
return employee;
}
}
我已经解释了如何使用JDBI,在博客文章中通过简单的步骤在Dropwzo中创建REST API,还有我在GitHub上创建的示例工作应用程序。请检查:http://softwaredevelopercentral.blogspot.com/2017/08/dropwizard-mysql-integration-tutorial.html
问题内容: 包括: all Spring libs, Apache Tomcat 7.0 library 在构建路径中 但它仍然给出错误: 在“ org.sprintframework.web-3.1.0.M1.jar”中,我可以看到“ org.springframework.web.context.ContextLoaderListener”。 Google上的某个人说应该包含spring.ja
问题内容: 我使用非常简单的代码返回XML 但是,出现以下错误 请帮忙。谢谢 问题答案: 运行时出现NoSuchMethodError表示你使用的库版本与生成代码所针对的版本不同。 在你的情况下,Spring是元凶。在运行时检查类路径上的内容,并确保以下各项: 版本与编译时间罐相同 如果存在多个版本,请删除不需要的版本
问题内容: 我不明白注释和之间的实际区别是什么? 扩展名还是它们具有完全不同的含义?什么时候应该使用它们?在服务层中使用Spring ,在DAO 中使用javax? 谢谢回答。 问题答案: 几年前,Spring定义了自己的Transactional注释以使Spring bean方法具有事务性。 Java EE 7终于做了同样的事情,现在除了EJB方法外,还允许CDI bean方法是事务性的。因此,
我在CentOS虚拟机中安装了RabbitMQ,该虚拟机的网络适配器被定义为Bridge。我正在尝试配置RabbitMQ管理,以便通过机器的IP地址访问WebApp。配置如下:
这个FAQ的最新版本总是可以从Apache主站点得到,位于<http://httpd.apache.org/docs/2.2/faq/> 如果你的问题在这里没有找到答案,你也可以看看Apache 1.3 FAQ ,看你的问题是否在那里有了答案。 主题 背景 关于 Apache HTTP Server 的背景知识。 支持 我遇到问题该怎么办? 错误信息 这些错误信息是什么意思? 背景 什么是Apac
发布问题 更新问题 设置问题悬赏 获取问题列表 获取一个问题详情 删除一个问题 获取用户发布的问题列表 发布问题 POST /questions 输入 字段 类型 描述 subject 字符串 必须,问题主题或者说标题,不能超过 255 字节 ,必须以 ? 结尾。(不区分全角或者半角) topics 数组 必须,绑定的话题,数组子节点必须符合 { "id": 1 } 的格式。 body 字符串
问题内容: 我简直不敢相信我网站上正在发生的事情。当我添加此行时: 一切正常。如果我不这样做,CSS就会“混乱”,一切都会变得不同,布局也会变得“丑陋”。 这条线如何解决所有问题? 问题答案: 您正在将HTML与XHTML混合使用。 通常,声明用于区分HTMLish语言的版本(在这种情况下为HTML或XHTML)。 不同的标记语言将表现不同。我最喜欢的例子是。在浏览器中查看以下内容: XHTML
我试图在fabric rocket chat上联系,但没有得到太多帮助,因此在SO上发布了它。我有以下疑问: 我们是否可以在链码内访问块高度(我知道这在客户端是可行的,但在链码内是否可能) 可以从链码中的正在进行的事务调用新事务吗? 想知道hyperledger Fabric中存储的数据的历史记录在哪里 我们可以根据链码中的transactionid进行查询吗? 在fabric链码中编写调度程序是