просто используйте: он выберет столбец b и c.
df1=pd.DataFrame()
df1=df[['b','c']]
, тогда u может просто вызвать df1:
df1
Я думаю, что Клаудио прав - вы могли бы использовать Джерси, но вы были бы сами по себе, чтобы обрабатывать параметры запроса, так как он соответствует только пути.
Вы можете ввести UriInfo и вытащить параметры запроса из этого:
@Path("/operation") public class Operation { @Context protected UriInfo info; @GET public String operation() { if (info.getQueryParameters().containsKey("create")) // do stuff else if (info.getQueryParameters().containsKey("info")) // other stuff }
}
blockquote>Вы можете переключиться с Джерси на другую структуру. Я считаю, что Spring может маршрутизировать несколько методов на основе параметров запроса.
Как вы уже упоминали, возможно, вы могли бы написать что-то более стандартное, а затем переназначить запросы на это , Например, для изменения запроса можно использовать фильтр Servlet или внешний сервер, например Apache httpd или nginx.
Мышление в терминах ресурсов что это за действия? Учетные записи клиентов, фильмы, биржевые торги и т. Д. Для аргументов, скажем, это «Foo». Вы можете пойти с чем-то вроде этого:
@Path("/foo") public class FooResource { @Context protected UriInfo info; @GET @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) public Foo getById(@QueryParam("id") int id) { // get Foo by id Foo = .... // return an instance of Foo and let Jersey convert it to XML // or JSON depending on the "Accept" header that the client sent return foo; } @POST @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) public Response create(Foo instance) { // let Jersey deserialize the request body from JSON or XML. // save the instance however you want int id = fooService.save(instance); // return a 204 "created" with a "Location" header URI location = info.getAbsolutePathBuilder().path("{id}").build(id); return Response.created(location).build(); }
}
blockquote>Кажется, что ваша структура URI задана кем-то другим, поэтому это может быть не вариант для вас. Если вы выполняете текущую структуру URI, есть одна серьезная ошибка, о которой вы должны знать.
В соответствии с спецификацией HTTP 1.1 , запросы GET должны быть idempotent . Похоже, что ваш текущий проект создает новые экземпляры на стороне сервера с запросами GET. Существует потенциал для поломки ... промежуточные прокси или веб-браузеры могут кэшировать ответы на ваши запросы GET и предотвращать создание новых экземпляров.
Я думаю, что выбор метода основан на непараметрической части URI. Не можете ли вы сконструировать это так, чтобы клиент вызывал http://localhost:8080/ws/operation/info
и http://localhost:8080/ws/operation/create?name=something
?
Это было бы легко достичь:
@Path("/operation")
public class Operation {
@GET
@Path("info")
public String info() {
return "info";
}
@GET
@Path("create")
public String create(@QueryParam("name") String name) {
return "create";
}
}
Я вижу, что это уже ответили, но у меня была аналогичная проблема, и я получил решение с использованием подресурсов.
package com.example.ws;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.QueryParam;
@Path("/")
public class Operation {
@Path("/")
public Object sub(@QueryParam("operation") String operation)
{
if ("info".equals(operation))
return new InfoOp();
if ("create".equals(operation))
return new CreateOp();
//handle via error code
}
public class InfoOp {
@GET
public String info() {
return "info";
}
}
public class CreateOp {
@GET
public String create(@QueryParam("name") String name) {
return "create: " + name;
}
}
}