Crear JAVA RESTful Webservices con Jersey - dynamic web project maven project JSON

Jersey RESTful Web Services framework is an open source framework for developing RESTful Web Services in Java.

1)  Crear el proyecto
click derecho / new / dynamic web project

por ejemplo
en porject name : services-api

2) Crear el deployment descriptor file (osea el web.xml)

click derecho sobre el proyecto/ java EE tools/ generate deployment descriptor stub

3) editar el web.xml

ir a WebContent/WEB-INF/web.xml

agregar las sgts lineas
.....

<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
4) convertir el proyecto a uno de tipo maven
(eso lo hacemos para poder agregar librerias como por ejemplo para manipular json)
click derecho sobre el proyecto/ configure / convert to maven project
5) editar el archivo pom.xml 
agregar las sgts lineas
<dependencies>
<dependency>
<groupId>asm</groupId>
<artifactId>asm-all</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-bundle</artifactId>
<version>1.14</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20090211</version>
</dependency>
</dependencies>
6) Crear la clase con los servicios
click dere. sobre el proyecto/ new / class
package> com.example
name> MyApiServices
en este ejemplo el servicio recibira por POST datos en formato json
y unicamente devolvera lo que recibe.
@Path("/")
public class MyApiServices {
@POST
@Path("/myApiService")
@Consumes(MediaType.APPLICATION_JSON)
public Response apiREST(InputStream incomingData) {
StringBuilder builder = new StringBuilder();
try {
BufferedReader in = new BufferedReader(new InputStreamReader(incomingData));
String line = null;
while ((line = in.readLine()) != null) {
builder.append(line);
}
} catch (Exception e) {
System.out.println("Error Parsing: - ");
}
System.out.println("Datos recibidos: " + builder.toString());
// return HTTP response 200 in case of success
return Response.status(200).entity(builder.toString()).build();
}
 }
 7) agregar el proyecto al Tomcat Server

en la pestaña de Servers 
click derecho sobre el servidor creado previamente (en mi caso Tomcat v8.0 Server at localhost)

add/remove y agregamos nuestro pyecto.

8) ejecutar el Tomcat Server y testear el service

-click dere sobre el server y "start"

en firefox usamos la extension REstClient http://restclient.net/

en HEADER crear Content-type : application/json

Method: POST

Url: http://localhost:8080/services-api/api/myService

en el Body:
{
    "usuario": {
        "id": "1001",
        "nombre": "Juan",
        "apellido": "Perez"
    }
}

al hacer click en [send]
obtendremos

{ "usuario": { "id": "1001", "nombre": "Juan", "apellido": "Perez" }}
 fuente:
http://crunchify.com/create-very-simple-jersey-rest-service-and-send-json-data-from-java-client/

programar en yii como sacar de las urls el index.php?r=

1)
en protected/config/main.php habilitar el urlManager

'urlManager'=>array(
        'urlFormat'=>'path',
        'rules'=>array(
            '<controller:\w+>/<id:\d+>'=>'<controller>/view',
            '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
            '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
        ),
  'showScriptName'=>false,
    ),
 
2)
 en la raiz de la aplicación el archivo .htaccess debe ser asi

RewriteEngine on

    # if a directory or a file exists, use it directly
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond $1 !^(index\.php)

    # otherwise forward it to index.php
    RewriteRule ^(.+)$ index.php?$1 [PT,L,QSA]

Programar en Yii 1 Bootstrap

1)
descargar la extension yiistrap desde aqui
http://www.yiiframework.com/extension/yiistrap/

(la version a descargar es yiistrap-1.1.1.zip)

2)
crear la carpeta "bootstrap"
protected/extensions/bootstrap

y copiar ahi el contenido de la carpeta de-zipeada de yiistrap

3)
editar el archivo de configuración protected/config/main.php

<?php
// main configuration
return array(
 ...
    // path aliases
    'aliases' => array(
        ...
        'bootstrap' => realpath(__DIR__ . '/../extensions/bootstrap'), // change this if necessary
    ),
    // import paths
    'import' => array(
        ...
        'bootstrap.helpers.TbHtml',
    ),
    // application modules
    'modules' => array(
        ...
        'gii' => array(
            'generatorPaths' => array('bootstrap.gii'),
        ),
    ),
    // application components
    'components' => array(
        ...
        'bootstrap' => array(
            'class' => 'bootstrap.components.TbApi',   
        ),
    ),
);
 
4) agregar la siguiente linea en la sección de head de protected/views/layouts/main.php
 
<?php Yii::app()->bootstrap->register(); ?> 
 
5) para ver los distintos elementos de bootstrap leer
 
http://www.getyiistrap.com/site/basics
  
 

programar en yii 1.1 - behavior auditoria

se busca que al crearse un nuevo usuario
o se modifique, se guarden automaticamente los campos de fecha de creacion y modificación.

1) crear la carpeta protected/behaviors

2) crear el archivo Timestampbehavior.php en la carpeta creada.

 class Timestampbehavior extends CActiveRecordBehavior
    {
        public function beforeSave($event){
            $currenttime=new CDbExpression('NOW()');
            if($this->owner->isNewRecord){
                    $this->owner->created=$currenttime;
            }
                    $this->owner->modified=$currenttime;       
            return true;
        }
    }

3) en el modelo Usuarios.php agregar la siguiente funcion:

 public function behaviors(){
       return array(
            'Timestampbehavior'=>array(
                   'class'=>'application.behaviors.Timestampbehavior',
                   ),
       );  
    }

programar en yii 1.1 - modelo, base de datos, crud

crear la sgt tabla:

CREATE TABLE usuarios (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(30) NOT NULL,
apellido VARCHAR(30) NOT NULL,
email VARCHAR(50),
created date not null,
modified date not null
)

en /protected/config/main.php

descomentar

/*
'gii'=>array(
'class'=>'system.gii.GiiModule',
'password'=>'Enter Your Password Here',
'ipFilters'=>array('127.0.0.1','::1'),
),
*/
 
en /protected/config/database.php
descomentar la parte de mysql colocar los datos de tu conexion y comentar la parte de sqlite
 
 //'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db',
    // uncomment the following lines to use a MySQL database
  
    'connectionString' => 'mysql:host=localhost;dbname=bibliotekbd',
    'emulatePrepare' => true,
    'username' => 'root',
    'password' => '',
    'charset' => 'utf8',
 
 
abrir la sgt url:
http://localhost/bibliotek/index.php?r=gii
 
-crear el modelo basado en la tabla Usuarios
-crear el CRUD basado en el modelo Usuarios creado en el paso anterior
 

programar en yii 1.1

la ultima versión estable es la 1.1.17

1) descargarla de http://www.yiiframework.com/download/#yii1
2) descomprimirla y copiar la carpeta de yii en xampp/htdocs
3) abrir una consola y crear mediante la sgt linea de comandos tu primera aplicación

c:/xampp/php/php.exe c:/xampp/htdocs/yii-1.1.17/framework/yiic.php webapp c:/xampp/htdocs/bibliotek

4) levantar el apache desde le panel de control de xampp
5) abrir un browser y escribir la sgt url: http://localhost/bibliotek














Si trabajas con Eclipse

1) click derecho New PHP project
y continuar como indica la figura

instalar memcache y memcached en xampp 1.7.3 php 5.3.1

EDITAR C:/xampp/php/php.ini AGREGAR LAS SIGUIENTES LINEAS extension=php_memcache.dll [Memcache] memcache.allow_failover = 1 memcache.max_failover_attempts=20 memcache.chunk_size =8192 memcache.default_port = 11211 Download php_memecache.dll php_memcache-cvs-20090703-5.3-VC6-x86 (buscar esa version pues php fue compilada con vc6) Unzip el archivo tomar el php_memcache.dll y pegarlo en el folder ext .C:/xampp/php/ext/ Download memcached for windows unzip en c:/memcached/ Abrir consola rn modo Administrator Instalar el memcache service c:\memcached\memcached.exe -d install iniciaR MEMCACHED c:\memcached\memcached.exe -d start Restart Xampp Apache

linux ubuntu mint actualizar chrome

 desde una terminal: $ sudo apt update $ sudo apt install google-chrome-stable